b.r*_*oth 6 java garbage-collection
我们最近将我们的一个应用程序从Java 1.4升级到Java 6.
通过一些负载和性能测试,我们观察到Java 6中的可用内存通常保持在比Java 1.4更低的水平.
在使用Java 6对应用程序进行一些分析之后,我们注意到许多对象不再被任何其他对象引用(即垃圾收集的候选者)留在内存中,显然从未被垃圾收集.我们把它作为较低可用内存的解释.
问题是:垃圾收集行为从Java 1.4改为Java 6的方式是什么?
Joa*_*uer 15
垃圾收集行为从Java 1.4改为Java 6的方式是什么?
非也!
Java 1.4到Java 6是一个非常长的时间跨度(在最初 版本之间差不多5年,在最初的1.4版本和当前的Java 6版本之间超过8年,根据这篇wiki文章).
在那段时间内应用了许多更改和优化,只要程序仍然有效,您就不应该真正关心.
拥有更多已用内存意味着JVM在不需要时不会浪费时间进行垃圾回收.如果您希望它使用更少的内存,那么您应该减少最大堆(或以其他方式调整JVM参数; 本文解释了如何在Java 5中执行此操作,大部分建议仍然适用).
如果你真的得到OutOfMemoryError了以前没有得到的东西,那就有点不同了.然后你应该检查你如何使用弱引用和软引用,或作为最后的手段尝试找出你是否遇到了JVM错误.
垃圾收集在1.4到5之间以及5到6之间进行了几次优化
oracle/sun在网上有一些关于性能差异的白皮书.
http://java.sun.com/performance/reference/whitepapers/5.0_performance.html#2.11
http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.2
| 归档时间: |
|
| 查看次数: |
2537 次 |
| 最近记录: |