Java垃圾收集时间?

Java垃圾收集时间?,java,performance,garbage-collection,Java,Performance,Garbage Collection,我有一个非常敏感的Java应用程序。(我知道我实际上应该使用C或其他东西,但现在是Java。)我正在努力避免创建和丢弃对象。现在我需要知道还有多少垃圾在收集 我怎么才能知道呢? 如果可能的话,我想要一个毫秒或纳秒的数字,不需要安装更多的软件。你可以使用它,它正是你需要的。 如下所示,您有非常有用的GC活动: 除了GC活动之外,还有很多详细信息,如:堆使用情况、cpu使用情况、对象实例使用情况等。您可以使用诸如监视应用程序活动之类的工具。确保您正在使用适当的GC算法 Oracle JVM提供多种

我有一个非常敏感的Java应用程序。(我知道我实际上应该使用C或其他东西,但现在是Java。)我正在努力避免创建和丢弃对象。现在我需要知道还有多少垃圾在收集

我怎么才能知道呢?

如果可能的话,我想要一个毫秒或纳秒的数字,不需要安装更多的软件。

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

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

您可以使用诸如监视应用程序活动之类的工具。确保您正在使用适当的GC算法

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

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

阅读有关这些收集器的更多信息。

,它使内存配置文件能够评估内存使用情况和动态分配泄漏,并使CPU配置文件能够评估线程冲突

或者您可以让JVM打印GC活动。。我有以下设置:

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

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

+1注意:对于低GC程序,VisualVM将创建比应用程序更多的垃圾。为此,我使用了你的工具包,它不是免费的。我将从VisualVM开始。VisualVM还有一个名为VisualGC的插件,它实时显示每个堆空间的情况。只是提醒一下,C语言并不是比Java好得多——这取决于你如何比较它们,归根结底,C在内存占用和数字密集型程序方面优于Java,而Java具有更好的多线程支持。我几年前读过的一篇研究论文发现(如果让Java堆增长到C堆的4倍大小),对于许多Sourceforge程序来说,这两种语言之间没有性能差异