相关疑难解决方法(0)

如何从应用程序内部检测 JVM 垃圾收集周期?

我只是想知道是否有一种方法可以从正在 gc 的代码/JVM 中检测垃圾收集周期。

时机不起作用。因此,事件发生在实际周期之前还是之后并不重要。(在循环期间发生事件似乎极不可能,而且也可能很危险,具体取决于所使用的 GC 实现)。

我能找到的只是可以与正在运行的 JVM 并行使用的应用程序,例如 jstat:https: //dzone.com/articles/how-monitor-java-garbage以及此处的源代码,例如:https:// /github.com/eagle518/jdk-source-code/blob/master/jdk5.0_src/j2se/src/share/classes/sun/tools/jstat/Jstat.java

我所看到的是他们使用

    MonitoredHost monitoredHost = MonitoredHost.getMonitoredHost(vmId);
    MonitoredVm monitoredVm = monitoredHost.getMonitoredVm(vmId, interval);
Run Code Online (Sandbox Code Playgroud)

所以我的问题基于两个问题。如果第二个问题有解,我们就不需要回答第一个问题:

  1. 我对MonitoredVm的了解还不够好,不知道如何访问本地JVM。通常需要 VM ID。我怎样才能可靠地解决这个问题,或者是否有其他方法可以获取“本地” MonitoredVm
  2. 甚至有必要使用 MonitoredVm,还是有更简单的方法,比如可以“安装”关闭挂钩并检测该事件 ( Runtime.getRuntime().addShutdownHook(hookThread);)?Java Reflection 也是一个受欢迎的解决方案!

java garbage-collection

2
推荐指数
1
解决办法
174
查看次数

标签 统计

garbage-collection ×1

java ×1