JVM 和 GC 调优 - 没有完整 GC 的理论
我有一个具有两种类型对象的大规模应用程序:长生存期(缓存)和短生存期(请求 - 进程 - 响应)。从理论上讲,对于这种类型的应用程序,我认为可以配置年轻与旧的空间,因此旧的空间消耗是恒定的,导致没有完整的GC。
我已经更改了newSize-maxNewSize参数,但是,旧堆继续上升,直到完整GC。每个完整 GC 之后,消耗量降至 20%(缓存占用 20%)。出于某种原因,我的物品进入了旧空间。我有两个嫌疑人为什么要搬到旧空间:
根据这篇文章:http://chaoticjava.com/posts/gc-tips-and-memory-leaks/,如果你分配了大物体,这些物体就会直接进入旧空间。这是真的吗,如果是,是否有JVM选项参数可以为Young空间设置对象大小阈值?
如果我正确理解了这个过程,那么对象在移动到“旧”部分之前,会在“To-From”生存部分之间切换。是否有参数可以设置在移动到旧空间之前要在 To 和 From 之间完成多少次切换?
还有其他提示吗?
谢谢 阿玛尔