我读过很多关于用Java调优GC的文章,经常想知道有多少人真正使用了一些更高级的特性。
我总是避免在可能的情况下进行调优,并专注于编写我所能编写的最简单的代码(Brian的建议)--到目前为止,这似乎对我很有帮助。
这些调优策略是否具有跨VM版本变化的弹性,还是需要不断的重新评估?
我使用过的一个调优是-server标志。
发布于 2009-03-08 17:36:00
我当前工作的一部分是照顾和输入一个大型java应用程序,该应用程序设计为具有大量内存(目前约为8GB),主要是由于正在进行的计算,其中包含大量缓存的数据。我使用标准的GC设置完成了最初的部署,主要是因为没有一种简单的方法来模拟以完全倾斜方式运行的生产环境。
在接下来的几个月中,我分阶段定制了GC设置。一般说来,最大的可用旋钮似乎是调整增量gc的频率和大小--最大的改进是用较大的周期gc来换取更小和更频繁的gc。但我们确实看到了性能的改善。
我不会发布我的特定设置,因为( a)它们是特定于我们的设置,和( b)因为我没有它们在手边:)。但总的来说,我发现
。
Here's是来自prev的一个很好的参考。stackoverflow讨论
发布于 2009-03-08 17:24:33
我不得不说,我还没有必要经常使用调优。但是,我与那些编写延迟非常关键的代码的人密切合作:他们经常使用这种调优--指定使用哪种GC算法、最大暂停时间、生存率等。
因此,我想答案是:如果延迟对应用程序至关重要,您可能需要考虑调整GC。
发布于 2009-03-08 17:38:58
我想说的是,最常见的调优是最大内存大小。大多数其他内存选项都有合理的缺省值,并且经常过度调优IMHO。也就是说,设定当它真的没有多大的区别。我经常看到人们设置了很多选项,而在任何情况下,其中一半是默认的。;)
使用分析器是改进GC行为的最有效方法(通过减少创建对象的数量)。
https://stackoverflow.com/questions/623939
复制相似问题