Java7 对比 java5 垃圾回收
Java7 vs java5 garbage collection
我们正计划将 运行 在 Java5 堆栈上的企业应用程序迁移到 Java7 堆栈。我们在 implicit gc 调用(主要是主要 gc)方面存在问题,导致系统在短时间内(从 5 分钟到 30 分钟不等)不稳定。分析 gc 统计数据后,我们发现 Compact 阶段与标记和清除阶段相比需要相当长的时间才能完成。我知道压缩非常复杂且耗时,但它会影响面向客户的应用程序服务器,并且在此阶段很少有连接断开。
现在,我的问题是,当我们迁移到 Java7 时,是否有比 Java5 更好的垃圾收集过程?
为应用服务器提供良好的系统资源。
- 每个应用服务器包含 32 cpu 个内核
- 包含 64 GB 内存
- 应用服务器是 IBM webpshere 服务器
- 操作系统 - 64 位 IBM AIX
如前所述,gc 是由于隐式系统调用而发生的。没有调用 gc 的显式系统调用。
默认情况下,java 7 在服务器 class 机器上使用并行 GC。如果您使用的是 JDK 7 update 4 或更高版本,请切换到 G1 垃圾收集器,这可能会给您带来更好的性能。但正如@the8472 所建议的那样,了解您在 java 5 和现在的当前环境中使用的设置会很好。
Java 7 在 2015 年 4 月左右达到生命周期结束。为什么不迁移到 1.8?
GC 性能通常会随着 java 主要版本的发布而提高(在某些情况下会随着次要 GC 的发布而提高)。
你应该看看不同的GC调优标志,以下link可能对你有帮助
http://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html
http://stas-blogspot.blogspot.com/2011/07/most-complete-list-of-xx-options-for.html
Now, my question is as we are migrating to Java7, is there a better garbage collection process compared to Java5?
通常是的,虽然作为@Pushkar,你真的应该迁移到 Java 8.
关于您的应用程序的具体情况,听起来您需要在 Java 5 上调整/重新调整垃圾收集。如果您定期遇到 5 到 30 >>分钟<<由于 GC 导致的不稳定,有一些相当错误的地方。当前行为可能是由于您的应用程序或 Websphere(例如内存泄漏、过度缓存等)造成的,也可能是由于 GC 调优不当造成的。
简而言之,切换到 Java 7(或 8)可能会让事情变得更好 "out of the box",但您可能需要付出更多努力来解决您的问题的根本原因问题。
最后,我建议一些显而易见的事情。
逐步实施更改。不要一次升级您的应用程序、websphere 版本、java 版本等。
一次升级您的服务器。制定一个 roll-back 计划,以防出现不可接受的性能。
如果可能,首先测试所有内容...包括性能/负载测试。
我们正计划将 运行 在 Java5 堆栈上的企业应用程序迁移到 Java7 堆栈。我们在 implicit gc 调用(主要是主要 gc)方面存在问题,导致系统在短时间内(从 5 分钟到 30 分钟不等)不稳定。分析 gc 统计数据后,我们发现 Compact 阶段与标记和清除阶段相比需要相当长的时间才能完成。我知道压缩非常复杂且耗时,但它会影响面向客户的应用程序服务器,并且在此阶段很少有连接断开。
现在,我的问题是,当我们迁移到 Java7 时,是否有比 Java5 更好的垃圾收集过程?
为应用服务器提供良好的系统资源。
- 每个应用服务器包含 32 cpu 个内核
- 包含 64 GB 内存
- 应用服务器是 IBM webpshere 服务器
- 操作系统 - 64 位 IBM AIX
如前所述,gc 是由于隐式系统调用而发生的。没有调用 gc 的显式系统调用。
默认情况下,java 7 在服务器 class 机器上使用并行 GC。如果您使用的是 JDK 7 update 4 或更高版本,请切换到 G1 垃圾收集器,这可能会给您带来更好的性能。但正如@the8472 所建议的那样,了解您在 java 5 和现在的当前环境中使用的设置会很好。
Java 7 在 2015 年 4 月左右达到生命周期结束。为什么不迁移到 1.8?
GC 性能通常会随着 java 主要版本的发布而提高(在某些情况下会随着次要 GC 的发布而提高)。
你应该看看不同的GC调优标志,以下link可能对你有帮助 http://www.oracle.com/technetwork/articles/java/vmoptions-jsp-140102.html
http://stas-blogspot.blogspot.com/2011/07/most-complete-list-of-xx-options-for.html
Now, my question is as we are migrating to Java7, is there a better garbage collection process compared to Java5?
通常是的,虽然作为@Pushkar,你真的应该迁移到 Java 8.
关于您的应用程序的具体情况,听起来您需要在 Java 5 上调整/重新调整垃圾收集。如果您定期遇到 5 到 30 >>分钟<<由于 GC 导致的不稳定,有一些相当错误的地方。当前行为可能是由于您的应用程序或 Websphere(例如内存泄漏、过度缓存等)造成的,也可能是由于 GC 调优不当造成的。
简而言之,切换到 Java 7(或 8)可能会让事情变得更好 "out of the box",但您可能需要付出更多努力来解决您的问题的根本原因问题。
最后,我建议一些显而易见的事情。
逐步实施更改。不要一次升级您的应用程序、websphere 版本、java 版本等。
一次升级您的服务器。制定一个 roll-back 计划,以防出现不可接受的性能。
如果可能,首先测试所有内容...包括性能/负载测试。