我的JVM基本上是一个火花执行器,它一个接一个地运行任务。任务需要内存,在其生命周期内需要大量内存。
上面的JVM运行在具有默认参数的G1GC上。正如您在右侧的VisualVM报告中所看到的,下午4:25到4:32之间的尖峰是由执行器运行的每个任务造成的(本质上,每个尖峰都是由于执行者在完成上一个任务之后选择了新任务)。当我在4:35触发手动GC时,我看到堆使用量急剧下降。另外,正如您在JConsole报告的左侧所看到的那样,G1GC从未收集过旧的gen空间( 16:35之前,旧的gen空间急剧下降是由于手动GC)。
因为我的应用程序是一个火花批次作业申请,所以如果JVM花费了大量的时间来执行GC,我是可以的。但是,我的记忆力有点不足。因此,我想知道如何调优我的JVM G1GC参数,以便有更频繁的GC (旧的gen空间也被收集),并且我可以使用相当多的堆空间(XMX)来完成工作。
发布于 2019-01-06 12:20:36
https://stackoverflow.com/questions/53921518
复制相似问题