java 参数优化配置

2018/08/16

简介

参数调优时使用到的各种参数。

堆设置

-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(生命开始的地方)

参考地址

https://blog.csdn.net/sivyer123/article/details/17139443/

目录