• JVM的GC机制及JVM的调优方法


    内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要。

    1.在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对 象尽早被释放掉,对于长周期对象,则不需要频率垃圾回收以确保无谓地垃圾扫描检测。为解决这种矛盾,Sun JVM的内存管理采用分代的策略。

    1)年轻代(Young Gen):年轻代主要存放新创建的对象,内存大小相对会比较小,垃圾回收会比较频繁。年轻代分成1个Eden Space和2个Suvivor Space(命名为A和B)
    当对象在堆创建时,将进入年轻代的Eden Space。
    垃圾回收器进行垃圾回收时,扫描Eden Space和A Suvivor Space,如果对象仍然存活,则复制到B Suvivor Space,如果B Suvivor Space已经满,则复制 Old Gen
    扫描A Suvivor Space时,如果对象已经经过了几次的扫描仍然存活,JVM认为其为一个Old对象,则将其移到Old Gen。
    扫描完毕后,JVM将Eden Space和A Suvivor Space清空,然后交换A和B的角色(即下次垃圾回收时会扫描Eden Space和BSuvivor Space。

    我们可以看到:Young Gen垃圾回收时,采用将存活对象复制到到空的Suvivor Space的方式来确保不存在内存碎片,采用空间换时间的方式来加速内存垃圾回收。
     2)年老代(Tenured Gen):年老代主要存放JVM认为比较old的对象(经过几次的Young Gen的垃圾回收后仍然存在),内存大小相对会比较大,垃圾回收也相对没有那么频繁(譬如可能几个小时一次)。年老代主要采用压缩的方式来避免内存碎片 (将存活对象移动到内存片的一边),当然,有些垃圾回收器(譬如CMS垃圾回收器)出于效率的原因,可能会不进行压缩。
     3)持久代(Perm Gen):持久代主要存放类定义、字节码和常量等很少会变更的信息

    2.总结

    1、对象优先在Eden分配,这里大部分对象具有朝生夕灭的特征,Minor GC主要清理该处
    2、大对象(占内存大)、老对象(使用频繁)

    3、Survivor无法容纳的对象,将进入老年代,Full GC的主要清理该处

    3.JVM有 2个GC线程

    第一个线程负责回收Heap的Young区
    第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区

    JVM(采用分代回收的策略),用较高的频率对年轻的对象(young generation)进行YGC,而对老对象( tenured  generation)较少( tenured  generation 满了后才进行)进行Full GC。这样就不需要每次GC都将内存中所有对象都检查一遍。

    GC不会在主程序运行期对PermGen Space进行清理,所以如果你的应用中有很多CLASS(特别是动态生成类,当然permgen space存放的内容不仅限于类)的话,就很可能出现PermGen Space错误。

    4.jvm的调优

    减少FullGC的次数,以为FullGC会暂停程序比较长的时间,如果FullGC的次数比较多。程序就会经常性的假死。

    Heap size 设置

    JVM 堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。

    如果Heap size 设置偏小,GC占用了更多的时间,而应用分配到的执行时间较少。但Heap size 最大不要超过可用物理内存的80%。

    具有2G或者更多的物理内存

    http://www.xuebuyuan.com/1201516.html

        

  • 相关阅读:
    FORM内置系统变量
    linux简单命常用令
    详解EBS接口开发之库存事务处理-物料批次导入
    TRIZ系列-创新原理-5-合并原理
    《Master Opencv...读书笔记》非刚性人脸跟踪 IV (终)
    Echarts折线图
    Redis命令学习-SortedSet(有序集合)
    tky项目第③个半月总结
    Torrent 文件图文解析
    ofbiz SSO 单点登录
  • 原文地址:https://www.cnblogs.com/Mandylover/p/5208055.html
Copyright © 2020-2023  润新知