简介
参数调优时使用到的各种参数。
堆设置
-Xms : 初始堆内存大小
-Xmx : 最大堆内存大小
-Xss : 每个线程所消耗的内存大小(如-Xss15120是指每增加一个线程就会消耗15M内存),最好设置成128K,默认值为512K
-XX:PermSize=n 设定内存的永久保存区初始大小,默认为64M(永久是指方法区、永久代,还有年轻代、老年代)
-XX:MaxPermSize=n 设定内存永久保存区最大大小,默认为64M
-XX:NewSize=n : 设置年轻代初始内存大小
-XX:MaxnewSize=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:+UseParalledOldGC # 设置并行收集器 设置并行年老代收集器 : 使用多线程去完成垃圾清理工作,这样可以充分利用多核的特性,大幅降低gc时间。
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC # 设置并行收集器 : 在Minor GC时会暂停所有的应用线程,并以多线程的方式进行垃圾回收。在Full GC时不再暂停应用线程,而是使用若干个后台线程定期的对老年代空间进行扫描,及时回收其中不再使用的对象。
-XX:+UseG1GC # G1(并发)收集器 : 为了尽量缩短处理超大堆(大于4GB)时产生的停顿。相对于CMS的优势而言是内存碎片的产生率大大降低。
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n : 设置并行收集器收集时使用的CPU数。并行收集器线程数。
-XX:MaxGCPauseMillis=n : 设置并行收集器最大暂停时间
-XX:GCTimeRatio=n : 设置垃圾回收时间占运行时间的百分比 公式为1/(1+n)
并行收集器设置
-XX:+CMSIncremantalMode : 设置为增量模式 适用于单CPU情况
-XX:ParallelGCThreads=n : 设置并行收集器年轻代收集方式为并行收集时使用的CPU数 并行收集线程数
java内存结构
+--堆--+-伊甸区eden
| heap +-幸存一区surivor-1
java | +-幸存二区surivor-2
内存 +-非堆--永久区Parmnent(1.8-)/元空间MetaSpace(1.8+)
结构 | non-heap
+-离堆--java之外的内存
share
位置
堆 heap : 对象 + 数组
栈 stack : 线程 + 方法
内存模型
堆区 :
年轻代 : 伊甸区eden 幸存一区surivor-1 幸存二区surivor-2
年老代(老年代) :
java程序执行流程
伊甸区eden(生命开始的地方)