JVM调优

作者: 错位的季节 | 来源:发表于2017-10-15 21:39 被阅读9次

    一、JVM内存模型

    1.根据Java虚拟机规范,JVM将内存划分为:
    New(年轻代)
    Tenured(年老代)
    永久代(Perm)
    其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。

    年轻代(New):年轻代用来存放JVM刚分配的Java对象
    年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
    永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。

    New又分为几个部分:
    Eden:Eden用来存放JVM刚分配的对象
    Survivor1
    Survivro2:两个Survivor空间一样大,当Eden中的对象经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然,Survivor只是增加了对象在年轻代中的逗留时间,增加了被垃圾回收的可能性。

    JVM调优

    查看堆空间大小分配(年轻代、年老代、持久代分配)
    垃圾回收监控(长时间监控回收情况)
    线程信息监控:系统线程数量
    线程状态监控:各个线程都处在什么样的状态下
    线程详细信息:查看线程内部运行情况,死锁检查
    CPU热点:检查系统哪些方法占用了大量CPU时间
    内存热点:检查哪些对象在系统中数量最大

    相关文章

      网友评论

          本文标题:JVM调优

          本文链接:https://www.haomeiwen.com/subject/afxhuxtx.html