我的 Java 应用程序维护一个内部缓存,可以增长到 10 个演出。过期策略设置为 30 分钟或达到内存阈值时(我使用的是本地 ehcache)。很明显,30 分钟后,所有缓存的对象都将在旧 gen 中,并且需要完整的 gc 来收集它们。至于现在停止世界暂停可以达到 6 秒,我想减少它。
平均对象大小为 500k,但可能高达 1 meg,因此我们谈论的是 10000-20000 个缓存对象(实际上是字节数组)。
GC 优化的最佳策略是什么?我知道我可以脱离堆,但这是一种不得已的解决方案。
谢谢!