这部分内容有关JVM参数调优。
以Lab5为例的JVM参数调优
转载原文:https://blog.csdn.net/hahalidaxin/article/details/93138555
首先将JVM参数调优的目的定义为通过修改JVM参数达到减少GC时间的效果。
JVM参数设置如下时,发现AWT-Thread发生Exception,猜测是堆声明太小导致的。
简单设置参数后发现,观察操作过程中VisualGC的显示如下:
发现规律:1)Metaspace占用情况维持不变,19-20M 2)切换比赛策略需要耗费大量内存,大约需要两次Minor GC,Old Gen大约增加120M 3)普通操作会引起一次Minor GC
考虑到本程序的特点:轨道系统由构造类TrackGame统一管理。操作可以分为两种,一种是针对当前轨道系统的简单操作,一种是重新计算划分轨道系统,无论什么操作,都无法改变RunnerList中存储的大量对象(Old Gen)。经观察,一次Full GC之后,Old Gen中存活120M左右。
对于第一种操作,操作过程中会产生部分中间变量,GUI绘图也会产生内存占用,这些内存占用都是临时的;对于第二种操作,会导致大部分的对象失去引用,从而可以回收。
假定重新计算轨道系统是一个使用次数少的操作,用户的大部分操作还是集中于对于特定轨道系统进行操作,因此内存区域划分的基本思想是:
设置较大的Young Gen(1536M)以减少Minor GC次数。
设置合适的Old Gen(512M)
设置大点的SurvivorRatio(16):临时变量多,MinorGC后存活下来的少,经观察,Survivor占用平均80M左右。
设置MetaspaceSize(扩容时触发FullGC的下界)为30M(触发不了Full GC)。