• GC


    本地方法栈、程序计数器、虚拟机栈不需要进行垃圾回收。因为他们的生命周期是和线程同步的,随着线程的销毁,他们占用的内存会自动释放。

    所以,只有方法区和堆区需要进行垃圾回收,回收的对象就是那些不存在任何引用的对象。

    垃圾回收区域:

    新生代(Youn Generation):大致分为Eden区和Survivor区,Survivor区又分为大小相同的两部分:FromSpace和ToSpace。新建的对象都是从新生代分配内存,Eden区不足的时候,会把存活的对象转移到Survivor区。当新生代进行垃圾回收时会触发Minor GC(也称作Young GC)。
     旧生代(Old Generation):旧生代用于存放新生代多次回收依然存活的对象,如缓存对象。当旧生代满了的时候就需要对旧生代进行回收,旧生代的垃圾回收称作Major GC(也称作Full GC)。

    持久代(Permanent Generation):在Sun 的JVM中就是方法区的意思,尽管大多数JVM没有这一代。

    常见的GC算法引用、复制、标记-清除和标记-整理(压缩)

     1.引用计数(Reference Counting): 引用+1,去引用-1,垃圾回收时,只针对计数为0的对象。无法处理循环引用的问题。

     2.复制(Copying):两个相等的区域。遍历一个区域复制到另个区域。不会出现内存碎片,但需要两倍内存空间。

     3. 标记-清除(Mark-Sweep):先从引用根节点标记所有被引用的对象,再遍历整个堆,清楚未标记。STW,会出现内存碎片。

     4.标记-整理(Mark-Compact):同标记清楚。有优化,清楚对象时压缩内存,不会出现内存碎片。

    垃圾收集器

    串行收集器(Serial GC)、并行收集器(ParNew GC)、Parallel Scavenge GC

    CMS (Concurrent Mark Sweep)收集器、Serial Old收集器、Parallel Old收集器

    G1(Garbage-First)收集器

    Serial GC, 复制算法。该收集器适用于单CPU、新生代空间较小且对暂停时间要求不是特别高的应用上,STW(stop the world)是client级别的默认GC方式。 

    ParNew GC,复制算法,Serial GC的多线程版本,除使用多条线程GC外,其他控制参数、收集算法、STW、回收策略都一样。这样它就可以被用于服务端上(server)。并行

    Parallel Scavenge GC,复制算法,并行多线程。更关注系统吞吐量(运行用户代码时间/[运行用户代码时间+GC时间]),是server级别的默认GC方式

    -----------------------------------------以上为 新生代的收集器-------------------------------------------------------------------

    Serial Old GC,标记整理算法。是Serial收集器的老年代版本,它同样使用一个单线程执行收集。主要使用在Client模式下的虚拟机。

    Parallel Old GC,标记整理算法。是Parallel Scavenge收集器的老年代版本,搭配使用。吞吐量优先。

    CMS,标记清除算法。与用户线程并发运行,以达到最短回收时间。常见的B/S架构的应用就适合这种收集器,因为其高并发、高响应的特点。(GC过程四个阶段,比较复杂)

    -----------------------------------------以上为 老年代的收集器-------------------------------------------------------------------

    G1,标记-整理算法,面向服务端的收集器。其次可以比较精确的控制停顿。

    JVM优化

    java自带小工具:jdkin

    java.exe
    javaw.exe

    java虚拟机
    javac.exe java编译器
    javadoc.exe  生成文档
    native2ascii.exe  编码转换
    jps.exe 查jvm线程
    jstat.exe  
    jinfo.exe  
    jmap.exe  
    jstack.exe  
    jconsole.exe  
    jvisualvm.exe  
  • 相关阅读:
    SQL SERVER数据库使用过程中系统提示死锁处理办法
    SQL Server中Union和Union All用法?
    SQL Server 数据库bak备份文件还原操作和mdf文件附加操作
    SQL SERVER数据库Left Join用法
    SQL SERVER 数据库自动备份及定期删除设置步骤
    推荐一个学习SQL Server基本语法及其他编程的网站
    SQL SERVER数据库内 FOR XML PATH 函数用法
    前端常用正则表达式
    JS—DOM查询
    JS原生DOM增删改查操作
  • 原文地址:https://www.cnblogs.com/scmath/p/10246584.html
Copyright © 2020-2023  润新知