同步操作将从 帝八哥/JavaBooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
JVM - 参数调优
如何查看运行中程序的JVM信息
-version -help
-Xint -Xcomp -Xmixed
-XX+或者-某个属性
---> +表示开启,-表示关闭-XX:key=value
-XX:MetaspaceSize=128m
-XX:MaxTenuringThreshold=15
-Xms----> -XX:InitialHeapSize
-Xmx----> -XX:MaxHeapSize
-XX:+PrintFlagsInitial
:查看初始默认,eg:java -XX:+PrintFlagsInitial -version
-XX:+PrintFlagsFinal
:查看修改后的 :=
说明是修改过的-XX:+PrintCommandLineFlags
:查看使用的垃圾回收器堆最小值
堆最大堆。-Xms与-Xmx 的单位默认字节都是以k、m做单位的。
通常这两个配置参数相等,避免每次空间不足,动态扩容带来的影响。
新生代大小
每个线程池的堆栈大小。在jdk5以上的版本,每个线程堆栈大小为1m,jdk5以前的版本是每个线程池大小为256k。一般在相同物理内存下,如果减少-xss值会产生更大的线程数,但不同的操作系统对进程内线程数是有限制的,是不能无限生成。
设置新生代与老年代比值,-XX:NewRatio=4 表示新生代与老年代所占比例为1:4 ,新生代占比整个堆的五分之一。如果设置了-Xmn的情况下,该参数是不需要在设置的。
设置持久代初始值,默认是物理内存的六十四分之一
设置持久代最大值,默认是物理内存的四分之一
新生代中对象存活次数,默认15。(若对象在eden区,经历一次MinorGC后还活着,则被移动到Survior区,年龄加1。以后,对象每次经历MinorGC,年龄都加1。达到阀值,则移入老年代)
Eden区与Subrvivor区大小的比值,如果设置为8,两个Subrvivor区与一个Eden区的比值为2:8,一个Survivor区占整个新生代的十分之一
原始类型快速优化
编译速度加快
对象超过多大值时直接在老年代中分配
说明:
整个堆大小的计算公式:JVM 堆大小 = 年轻代大小+年老代大小+持久代大小。
增大新生代大小就会减少对应的年老代大小,设置-Xmn值对系统性能影响较大,所以如果设置新生代大小的调整,则需要严格的测试调整。而新生代是用来存放新创建的对象,大小是随着堆大小增大和减少而有相应的变化,默认值是保持堆大小的十五分之一,-Xmn参数就是设置新生代的大小,也可以通过-XX:NewRatio来设置新生代与年老代的比例,java 官方推荐配置为3:8。
新生代的特点就是内存中的对象更新速度快,在短时间内容易产生大量的无用对象,如果在这个参数时就需要考虑垃圾回收器设置参数也需要调整。推荐使用:复制清除算法和并行收集器进行垃圾回收,而新生代的垃圾回收叫做初级回收。
StackOverflowError和OutOfMemoryException。当线程中的请求的栈的深度大于最大可用深度,就会抛出前者;若内存空间不够,无法创建新的线程,则会抛出后者。栈的大小直接决定了函数的调用最大深度,栈越大,函数嵌套可调用次数就越多。
吞吐量和停顿时间是互斥的。
对于后端服务(比如后台计算任务),吞吐量优先考虑(并行垃圾回收);
对于前端应用,RT响应时间优先考虑,减少垃圾收集时的停顿时间,适用场景是Web系统(并发垃圾回收)
串行垃圾回收,现在基本很少使用。
新生代使用并行,老年代使用串行;
新生代使用并行,老年代使用CMS(一般都是使用这种方式),CMS是Concurrent Mark Sweep的缩写,并发标记清除,一看就是老年代的算法,所以,它可以作为老年代的垃圾回收器。CMS不是独占式的,它关注停顿时间
指定并行的垃圾回收线程的数量,最好等于CPU数量
禁用System.gc(),因为它会触发Full GC,这是很浪费性能的,JVM会在需要GC的时候自己触发GC。
在多少次GC后进行内存压缩,这个是因为并行收集器不对内存空间进行压缩的,所以运行一段时间后会产生很多碎片,使得运行效率降低。
降低标记停顿
在每一次Full GC时对老年代区域碎片整理,因为CMS是不会移动内存的,因此会非常容易出现碎片导致内存不够用的
使用手动触发或者自定义触发cms 收集,同时也会禁止hostspot 自行触发CMS GC
使用CMS作为垃圾回收,使用70%后开始CMS收集
设置perm gen使用达到多少%比时触发垃圾回收,默认是92%
设置为增量模式
CMS是不会默认对永久代进行垃圾回收的,设置此参数则是开启
开启详细GC日志模式,日志的格式是和所使用的算法有关
将时间和日期也加入到GC日志中
-Xms
-Xmx
-Xmn
-Xms128m -Xmx4096m -Xss1024K -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。