Java垃圾收集时间?

时间:2013-04-17 15:02:25

标签: java performance garbage-collection

我在Java中有一个性能敏感的应用程序。 (我知道我应该使用C或其他东西。但它现在是Java。)我试图避免创建和丢弃对象。现在我需要知道还在进行多少垃圾收集。

我如何找到?

如果可能的话,我希望有一个以毫秒或纳秒为单位的数字,不需要安装更多软件。

4 个答案:

答案 0 :(得分:8)

或者你可以让JVM打印GC活动..我有这些设置:

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log

GC活动将打印到文件 logs / gc.log ..

答案 1 :(得分:7)

您可以使用VisualVM等工具来监控应用程序活动。确保使用适当的GC算法。

Oracle JVM提供多种类型的垃圾收集器:

  • 吞吐量收集器
  • 并发低暂停收集器
  • 增量(有时称为火车)低暂停收集器:

详细了解这些收藏家here

答案 2 :(得分:2)

您可以使用VisualVm,这正是您所需要的 如下所示,您有GC活动非常有用:

enter image description here

除了GC Activity之外,你还有很多细节:堆使用,cpu使用,对象实例使用等。

答案 3 :(得分:1)

Jprofiler,它允许内存配置文件评估内存使用情况和动态分配泄漏,以及CPU分析以评估线程冲突。