0
我有一个巨大的堆(大约100GB)的应用程序,并且在初始化过程中它将几乎所有的可用内存分配给不同的缓存。问题在于,这个初始化阶段分配了大量的对象,导致旧的令人痛苦的去碎片化。所以我的想法是强制完整的gc作为初始化阶段的最后一步,以便对齐/压缩旧的代码并降低运行时“并发模式故障”的概率。如何在sun/oracle jvm上强制执行完整的gc,在旧版本中执行内存对齐/压缩
有什么办法强制这样一个集合?
感谢
我有一个巨大的堆(大约100GB)的应用程序,并且在初始化过程中它将几乎所有的可用内存分配给不同的缓存。问题在于,这个初始化阶段分配了大量的对象,导致旧的令人痛苦的去碎片化。所以我的想法是强制完整的gc作为初始化阶段的最后一步,以便对齐/压缩旧的代码并降低运行时“并发模式故障”的概率。如何在sun/oracle jvm上强制执行完整的gc,在旧版本中执行内存对齐/压缩
有什么办法强制这样一个集合?
感谢
基本上,你应该用尽你的记忆,然后打电话给gc
应该工作。
考虑这样http://www.informit.com/articles/article.aspx?p=19703
你也可以试试这个https://stackoverflow.com/a/6915221/1137529但我不知道是否会实际工作的罚款。
'System.gc()'? – fge 2012-01-03 10:38:49
那么根据javadoc它不能保证gc会触发。 – Tomek 2012-01-03 15:59:46
我不认为有什么保证,但也许我错了 – fge 2012-01-03 16:04:13