【发布时间】:2016-07-21 14:34:36
【问题描述】:
我看不到在我的应用服务器中触发了任何主要的 GC。这是因为,我分配了更多的内存,即 4GB。最大可达 1GB。我只想看到发生 Full GC。
要触发 Full GC,我需要填满堆内存,这在我的应用程序运行时是不可能的。因此,计划在启动服务器时放置一些临时对象并填充至少 3.5GB 的堆。
任何人都可以帮助我给我一些方法吗?
提前致谢
【问题讨论】:
-
Ermmm .... 使用
new分配一个大数组。或者分配一个列表并向其中添加大量元素。 -
你想要完成什么?
-
@bradimus 我只想在我的应用程序服务器中发生完整的 GC,而不更改任何参数...
-
@StephenC 假设我创建了一个 1MB 的大型数组,其中有数千个对象。在这种情况下我需要创建多少个数组?
-
堆被分成几个部分(年轻代和年老代)。对象根据它们的存活时间(它们保持可访问的时间)存储在这些部分中。当一个部分需要更多空间来存储对象并删除死对象时,就会发生 GC。被清除部分中的可达对象移动到下一个部分,而死对象则被认领。 AFAIK,仅当老年代需要更多空间时才需要完整的 GC。
标签: java performance garbage-collection jvm