我正在寻找关于如何在低延迟至关重要的环境中最佳调整年轻一代(相对于老一代)的争论。调优垃圾回收以实现低延迟
我自己的测试往往表明,当年轻一代相当大时,延迟是最低的(例如-XX:NewRatio < 3),但我无法调和这种直觉,认为年轻一代越大时间越长应该采取垃圾收集。
该应用程序运行在Linux上64位,JDK 6
内存使用情况是大约长期对象的50Megabytes在启动时(=数据高速缓冲存储器)被加载,并从那里它的只有(许多)非常短的寿命创建对象(平均使用寿命为< 1毫秒)。
一些垃圾回收周期需要10毫秒运行......与应用程序的等待时间,而这又是最大数的毫秒相比,看起来非常不相称。
如果年轻一代很大,那么这是不是意味着半生半活的东西在廉价的年轻一代中消失了,让您的老一代收藏更少? – gustafc 2010-05-06 14:44:19
@elec:我在这里帮不了你......但是你的问题是Java和其“自动化”(看它是如何自动化的)内存管理的根本问题的症状。我越用Java(十年后),我希望自己能够更好地管理内存(而且,我已经使用强制手动内存管理的语言,包括第二代语言(直接进入十六进制代码),几十年前)。在Java世界中,浪费了多少精力和时间来试图理解和“微调”非确定性GC ......对于什么应该是非问题:我想回到C++。 – SyntaxT3rr0r 2010-05-06 15:20:52
@WizardOfOdds - 我同意你的观点......就像我喜欢Java一样,它看起来并不是在需要非常低延迟的环境中使用的正确工具。 – Eleco 2010-05-12 08:48:03