Java垃圾收集,基于类的终身

use*_*513 10 java garbage-collection latency

我一直在玩Java垃圾收集器的参数,我看到昂贵和频繁的小垃圾收集,因为伊甸园/幸存者空间填满了.这是因为我分配了一个非常大的对象池.我知道的这些对象是"permament",因为它们被重用但永远不会被GCed.因此,我试图找到一种方法来"自动"将这些类型的对象放在旧代而不是新代中.

我目前正在通过分配一个非常大的新一代(以避免非常频繁的小型GC)来解决这个问题,不幸的是,这意味着每个单独的集合都更昂贵.

我希望能够为每个类指定一个使用率,并将其设置为特定类别的对象,我知道永远不会得到GCed(并且非常大)(在他的情况下,它是关于

我的应用程序对延迟很敏感.

我目前的设置是使用最小/最大堆大小为48的CMS.

这可能吗?我已经搜索了每个可能的JVM标志,但找不到任何相关的效果,并且看不到使用自定义类加载器的方法.

Ale*_*leš 2

考虑到 Hotspot,没有这样的标志允许您直接在 OldGen 中分配某些类实例。

如果池确实被重用并且“永久”,那么您应该仅在池分配期间获得频繁的次要GC。您需要运行应用程序更长时间,并查看池是否确实已被使用。之后,您应该不会看到任何由池使用引起的小型 GC。