[关闭]
@SailorXiao 2015-08-18T06:28:24.000000Z 字数 4936 阅读 2145

jvm内存优化

java jvm 内存优化


参考:
http://blog.csdn.net/kthq/article/details/8618052
http://www.jdon.com/idea/jvm.html
写的很好很详细,总结学习心得如下:

1 内存分类

jvm的内存从功能上可以分为四类:

其中:

我们重点来看一下持久代和用户堆

2 Permanent Space:持久代

3 Heap Space(old + new):

3.1 old:老年代

老年代主要用于存放一些生命周期较长的对象,当在年轻代中经历了若干次GC后仍存活的对象,会被移到老年代中
老年代的GC成为major gc或者full gc

3.2 new:年轻代

年轻代一般包括3个区,1个Eden区,2个Survivor区(from 和 to)

4 OOM

OOM是(“Out of Memory”)的简称,当一组对象生成时,内存申请过程如下:

OOM异常原因:

4 jvm内存参数说明和调优

-Xmx/-Xms:

-Xmn:

-XX:NewSize/-XX:MaxNewSize:

-XX:NewRatio:

-Xss:

-XX:PermSize/-XX:MaxPermSize:

-XX:SurvivorRatio:

-XX:MaxTenuringThreshold=n:

5 GC优化

关于GC,JVM给出了3种选择:串行收集器、并行收集器、并发收集器。串行收集器只适用于小数据量的情况,所以生产环境的选择主要是并行收集器和并发收集器。
默认情况下JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行智能判断。

5.1 串行收集器

-XX:+UseSerialGC:设置串行收集器

5.2 并行收集器(吞吐量优先)

5.3 并发收集器(响应时间优先)

5.4 其它垃圾回收参数

5.5 辅助信息参数设置

6 JVM参数名称等

1、标准参数(-),所有JVM都必须支持这些参数的功能,而且向后兼容;例如:

2、非标准参数(-X),默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容;

3、非稳定参数(-XX),此类参数各个JVM实现会有所不同,将来可能会不被支持,需要慎重使用

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注