zoukankan      html  css  js  c++  java
  • JVM性能调优

    一、jvm参数设置

    -XX:+PrintGCDetails:打印GC信息

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/a.dump:如果发生了OOM异常,那就把dump信息导出到d:/a.dump文件中

    -Xmx –Xms:指定最大堆和最小堆
    -Xmn:设置新生代大小

    -XX:PermSize:永久区初始大小

    -XX:MaxPermSize:永久区最大空间

    -Xss:栈空间大小设置

    -XX:NewRatio:新生代(eden+2*s)和老年代(不包含永久区)的比值, 例如:4,表示新生代:老年代=1:4,即新生代占整个堆的1/5

    -XX:SurvivorRatio(幸存代):设置两个Survivor区和eden的比值,例如:8,表示两个Survivor:eden=2:8,即一个Survivor占年轻代的1/10


    二、堆的分配参数总结:

    1.根据实际事情调整新生代和幸存代的大小
    2.官方推荐新生代占堆的3/8,幸存代占新生代的1/10
    3.在OOM时,记得Dump出堆,确保可以排查现场问题

    4.新生代分配的空间不同,默认的-XX:SurvivorRatio也不一样,有1,6等值

    5.适当减小幸存代大小,这样的话,能够减少GC的次数

    三、永久区分配参数:

    •   

        设置永久区的初始空间和最大空间。也就是说,jvm启动时,永久区一开始就占用了PermSize大小的空间,如果空间还不够,可以继续扩展,但是不能超过MaxPermSize,否则会OOM。

        他们表示,一个系统可以容纳多少个类型,我们知道,使用CGLIB等库的时候,可能会产生大量的类,这些类,有可能撑爆永久区导致OOM。于是,我们运行下面这段代码:

  • 相关阅读:
    身份证的测试用例
    集合
    网易考拉测试面试题整理
    linux基本指令分类
    网络编程
    设计模式
    MySQL中的索引
    MySQL中的事务
    Java判断字符串是否为乱码
    Activiti6.x删除外键
  • 原文地址:https://www.cnblogs.com/myf008/p/11176077.html
Copyright © 2011-2022 走看看