首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集从Java1.4到Java6的变化?

垃圾收集从Java1.4到Java6的变化?
EN

Stack Overflow用户
提问于 2010-08-20 17:06:04
回答 3查看 2.6K关注 0票数 6

我们最近将我们的一个应用程序从Java 1.4升级到了Java 6。

通过一些负载和性能测试,我们观察到,与Java1.4相比,Java 6中的可用内存通常处于更低的水平。

在使用Java6对应用程序进行了一些分析之后,我们注意到许多不再被任何其他对象引用的对象(即垃圾回收的候选对象)留在内存中,显然从未被垃圾回收过。我们将此作为较低可用内存的解释。

问题是:垃圾收集的行为方式是否从Java 1.4更改为Java 6?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-20 17:12:43

从Java1.4到Java6,

垃圾收集的行为方式有变化吗?

一定!

从Java1.4到Java6是一个相当长的时间跨度(根据this wiki article的说法,从initial releasesinitial 1.4 releasethe current Java 6 release几乎有5年的时间,超过8年的时间)。

在这段时间内应用了许多更改和优化,只要您的程序仍然可以工作,您就不应该真正关心。

拥有更多的已用内存只意味着JVM不会在不需要的时候浪费时间进行垃圾收集。如果您希望它使用更少的内存,那么您应该减少最大堆(或者调整JVM参数;this article解释了如何在Java5中做到这一点,许多建议仍然适用)。

如果你真的得到了以前没有得到的OutOfMemoryError,那就有点不同了。然后,您应该检查如何使用弱引用和软引用,或者作为最后的手段,尝试找出是否遇到了JVM错误。

票数 15
EN

Stack Overflow用户

发布于 2010-08-20 17:14:59

在1.4和5之间以及5和6之间,已经对垃圾收集进行了几次优化。

Oracle/Sun在线提供了一些关于性能差异的白皮书:

Java 5 Performance White Paper

Java 6 Performance White Paper

票数 5
EN

Stack Overflow用户

发布于 2010-08-20 17:15:37

Java SE在8年内发生了很大变化。

关于垃圾收集器,Java SE 6已经改进了很多。在JavaSE6Update14中引入了新的Garbage First GC。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3529505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档