jvm内存优化

作者: java面试收割机 | 来源:发表于2017-10-20 10:45 被阅读13次

JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略。由于GC开始垃圾回收时会挂起应用线程,严重影响了性能,调优的目是为了尽量降低GC所导致的应用线程暂停时间、 减少Full GC次数。

代大小调优

最关键参数:-Xms、 -Xmx 、-Xmn 、-XX:SurvivorRatio、-XX:MaxTenuringThreshold、-XX:PermSize、-XX:MaxPermSize

-Xms、 -Xmx 通常设置为相同的值,避免运行时要不断扩展JVM内存,这个值决定了JVM heap所能使用的最大内存。

-Xmn 决定了新生代空间的大小,新生代Eden、S0、S1三个区域的比率可以通过-XX:SurvivorRatio来控制(假如值为 4 表示:Eden:S0:S1 = 4:3:3 )

-XX:MaxTenuringThreshold 控制对象在经过多少次minor GC之后进入老年代,此参数只有在Serial 串行GC时有效。

-XX:PermSize、-XX:MaxPermSize 用来控制方法区的大小,通常设置为相同的值。

1.避免新生代大小设置过小

当新生代设置过小时,会产生两种比较明显的现象,一是minor GC次数频繁,二是可能导致 minor GC对象直接进入老年代。当老年代内存不足时,会触发Full GC。

2.避免新生代设置过大

新生代设置过大,会带来两个问题:一是老年大变小,可能导致Full GC频繁执行;二是 minor GC 执行回收的时间大幅度增加。

3.避免Survivor区过大或过小

-XX:SurvivorRatio参数的值越大,就意味着Eden区域变大,minor GC次数会降低,但两块Survivor区域变小,如果超过Survivor区域内存大小的对象在minor GC后仍没被回收,则会直接进入老年代,

-XX:SurvivorRatio参数值设置过小,就意味着Eden区域变小,minor GC触发次数会增加,Survivor区域变大,意味着可以存储更多在minor GC后任存活的对象,避免其进入老年代。

4.合理设置对象在新生代存活的周期

新生代存活周期的值决定了新生代对象在经过多少次Minor GC后进入老年代。因此这个值要根据自己的应用来调优,Jvm参数上这个值对应的为-XX:MaxTenuringThreshold,默认值为15次。

GC调优

1.GC搭配

参见另一遍垃圾收集器

垃圾收集器
http://blog.csdn.net/java2000_wl/article/details/8030172

2.查看JVM参数

命令行工具

http://blog.csdn.net/java2000_wl/article/details/8042010

可视化工具

http://www.importnew.com/?p=22235

3.GC日志参数

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:c:\Java\gc.log

参考:www.blog.csdn.net/java2000_wl/article/details/8090940

相关文章

  • 高效并发

    从JVM的角度看一下Java与线程,内存模型,线程安全以及JVM对于锁的优化 硬件内存模型与JVM内存模型 硬件的...

  • Tomcat优化

    Tomcat优化,可以分为内存,线程,IO. 1、Tomcat内存优化,启动时告诉JVM我要一块大内存(调优内存是...

  • 2021-09-24

    Android深度性能优化--内存优化 一、背景 在内存管理上,JVM拥有垃圾内存回收的机制,自身会在虚拟机层面自...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • jvm内存优化

    JVM调优主要是针对内存管理方面的调优,包括控制各个代的大小,GC策略。由于GC开始垃圾回收时会挂起应用线程,严重...

  • JVM优化篇之堆内存模型

    上一篇中讲了JVM的基本参数含义JVM优化篇之参数,这一篇我们来聊一聊JMM(java内存模型).jvm的堆内存模...

  • ElasticSearch优化系列三:机器设置(内存)

    heap参数设置优化 命令行修改 xmx-JVM最大允许分配的堆内存,按需分配 xms-JVM初始分配的堆内存 此...

  • 【内存】

    性能优化->虚拟机原理 怎么分析堆内存 内存泄露和内存溢出的原因 怎么做内存管理 JVM类加载机制Java内存区域...

  • Java面试细节总结

    Java基础 Jvm内存模型有哪些,分别有哪些gc算法,如何优化jvm进程参数; HashMap的数据结构怎样的,...

  • 1.JVM内存模型

    本章要点 1.JVM内存区域划分2.类类编译加载执行过程3.编译优化技术4.双亲委派机制 1.JVM内存划分 JV...

网友评论

    本文标题:jvm内存优化

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