jvm 调优

JVM 调优设计的几个方面:

  1. 合理的编写程序
    2.充分并合理的使用硬件资源
    3.合理地进行jvm调优

非堆内存:

  1. 堆外内存
  2. 文件句柄
  3. socket句柄
  4. 数据库连接

详细解释:

  1. 文件: 采用文件分割,,限制文件大小。
  2. 网络IO:
    限流
  3. 大对象:对于jvm 绝对是一个噩梦
    1. 避免使用大对象
    2.尽量减少大对象的生存时间(朝生夕死)
  4. JDK32 位版本,64位版本,服务器内存有16G,32G,64G
    4.1 JDK32 位版本 最高可以使用4G
    JDK64位版本,可以使用更多内存
    参考:https://blog.csdn.net/XXJ19950917/article/details/73527313
    4.2 尽量使用32位版本,因为目前的64位版本效率没有32位高
    4.3 -XX:HeapDumpOnOutOfMemoryError -Xmx10G ,这个dump文件会有10G
    5.现在一线互联网公司的做法:将大内存服务器分为小内存服务
    5.1 虚拟机
    5.2 docker
  5. JVM 调优原则
    6.1 降低Full GC的频次,一天有1-2次,控制在晚上,重启服务器或者我们来一个定时任务触发Full GC
    6.2 确保大对象的“朝生夕死”
    6.3 提高大对象进入老年代的门槛(-XX:MaxTenuringThreshold=15 经过MinorGC 15次后才进入老年代)

CMSInitiatingOccupancyFraction = (老年代-Eden-1个Survivor)/(老年代-新生代)*100
-server -Xmn500m -Xms1200m -Xmx1200m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSCompactAtFullCollection
-XX:+CMSFullGCsBeforeCompaction=5 -XX:+HeapDumpOnOutOfMemoryError -Xloggc:log/gc.log -XX:+PrintGCDetails -XX:+CMSParallelRemarkEnabled

-Xmn:新生代 -Xmx:最大堆内存 (-XX:PermSize=256m -XX:MaxPermSize=256m):JDK1.7中的,jdk1.8使用的是Mataspace,
SurvivorRatio设置Eden在新生代中的比例.
-XX:+UseConcMarkSweepGC 表示使用CMS垃圾回收器
-Xloggc:log/gc.log 分析o(老年代)增长是否合理,FullGC频率,Eden:s0:s1的比例是否合理

posted @ 2020-05-17 19:41  尘世的流浪人  阅读(281)  评论(0)    收藏  举报