我在 Java 中有一个对性能非常敏感的应用程序。(我知道我实际上应该使用 C 或其他东西。但现在是 Java。)我试图避免创建和丢弃对象。现在我需要知道还有多少垃圾收集正在进行。
我怎样才能知道?
如果可能的话,我希望有一个以毫秒或纳秒为单位的数字,不需要安装更多软件。
我在 Java 中有一个对性能非常敏感的应用程序。(我知道我实际上应该使用 C 或其他东西。但现在是 Java。)我试图避免创建和丢弃对象。现在我需要知道还有多少垃圾收集正在进行。
我怎样才能知道?
如果可能的话,我希望有一个以毫秒或纳秒为单位的数字,不需要安装更多软件。
或者你可以让 JVM 打印 GC 活动。我有这些设置:
-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log
GC 活动被打印到文件logs/gc.log ..
您可以为此使用VisualVm,这正是您所需要的。
正如您在下面看到的,您有非常有用的 GC 活动:
除了 GC Activity 之外,您还有很多详细信息,例如:堆使用情况、cpu 使用情况、对象实例使用情况等。
Jprofiler ,它使内存配置文件能够评估内存使用和动态分配泄漏以及 CPU 配置文件以评估线程冲突。