堆内存分配
-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
-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来达到创建更多线程的目的。