【发布时间】:2011-06-03 10:58:46
【问题描述】:
我有两种类型的对象的大规模应用程序:长期(缓存)和短期(请求-处理-响应)。理论上,用这种类型的应用,我觉得配置Young vs Old空间是可以的,所以Old空间消耗是恒定的,导致没有Full GC。
我更改了 newSize-maxNewSize 参数,但是,旧堆继续上升,直到 Full GC。每次 Full GC 后,消耗下降到 20%(缓存占 20%)。出于某种原因,我的对象进入了旧空间。我有两个怀疑为什么要搬到旧空间:
根据这篇文章:http://chaoticjava.com/posts/gc-tips-and-memory-leaks/ 它被告知如果您分配了大对象,这些对象会直接进入旧空间。这是真的吗,如果是的话,是否有JVM Option参数可以为Young空间设置对象大小阈值?
如果我正确理解了这个过程,对象会在 To-From 生存部分之间切换,然后再移动到旧部分。是否有参数可以设置在移动到旧空间之前要在 To 和 From 之间完成多少次切换?
还有什么建议吗?
谢谢, 阿马尔
【问题讨论】:
标签: java garbage-collection jvm performance