Java垃圾收集时间?

Bit*_*lue 8 java performance garbage-collection

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

我该怎么知道?

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

Iva*_*nic 8

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

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log
Run Code Online (Sandbox Code Playgroud)

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


kos*_*osa 7

您可以使用VisualVM之类的工具来监视应用程序活动.确保使用适当的GC算法.

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

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

这里阅读这些收藏家的更多信息.

  • +1注意:对于低GC程序,VisualVM将比您的应用程序创建更多垃圾.为此我使用了YourKit,这不是免费的.我会从VisualVM开始. (2认同)

Ste*_*han 2

您可以使用VisualVm来实现此目的,它正是您所需要的。
如下所示,GC 活动非常有用:

在此输入图像描述

除了 GC 活动之外,您还有很多详细信息,例如:堆使用情况、CPU 使用情况、对象实例使用情况等。