(进阶)JVM内存设置

堆内存分配

-Xms,默认是物理内存的1/64

-Xmx,默认值为物理内存的1/4

Xmn为1/4的-Xmx值

-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64

XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4

堆设置 

-Xms:初始堆大小 
-Xmx:最大堆大小 
-XX:NewSize=n:设置年轻代大小 
-XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4 
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值.注意Survivor区有两个.如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5 
-XX:MaxPermSize=n:设置持久代大小

收集器设置 

-XX:+UseSerialGC:设置串行收集器 
-XX:+UseParallelGC:设置并行收集器 
-XX:+UseParalledlOldGC:设置并行年老代收集器 
-XX:+UseConcMarkSweepGC:设置并发收集器

垃圾回收统计信息 

-XX:+PrintGC 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-Xloggc:filename

并行收集器设置 

-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数.并行收集线程数. 
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间 
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比.公式为1/(1+n)

并发收集器设置 

-XX:+UseConcMarkSweepGC               对老年代采用并发标记交换算法进行GC

扫描二维码关注公众号,回复: 1113342 查看本文章

-XX:CMSFullGCsBeforeCompaction=5  运行多少次GC以后对内存空间进行压缩,整理.

-XX:+UseCMSCompactAtFullCollection 对年老代的压缩
-XX:ParallelGCThreads=n                       并行收集线程数.

---------------------

OOM内存溢出异常分析  参考:http://www.importnew.com/14604.html

堆溢出(OutOfMemoryError:java heap space)

如果出现了内存溢出问题,这往往是程序本生需要的内存大于了我们给虚拟机配置的内存,

采用调大-Xmx来解决这种问题。

持久带溢出(OutOfMemoryError: PermGen space)

通过-XX:PermSize和-XX:MaxPermSize来设置

OutOfMemoryError:unable to create native thread

如果是因为这种情况导致的unable to create native thread,那么要么我们增大进程所占用的总内存,或者减少-Xmx或者-Xss来达到创建更多线程的目的。

猜你喜欢

转载自my.oschina.net/vshcxl/blog/1787877