如何防止死代码被JVM优化


public class A
{
    public String getText()
    {
        Marker.start();
        ...
        ...
        Marker.end();
    }
}
public class Marker
{
    public static void start()
    {
        long now = System.currentTimeMillis;
    }
    public static void end()
    {
        long now = System.currentTimeMillis;
    }
}

我想使用 JPDA(Java 平台调试器体系结构)来检测来自外部应用程序的 Marker.start() 和 Marker.end() 的出现。但是,我认为JVM可能会优化/消除代码。如何防止死代码被JVM优化?

例如,

您可以在类Marker中的某个地方创建一个假int变量,并在start()end()方法中递增/递减其值。我认为任何优化器都无法从类中删除实例字段,即使该值未在任何地方使用。毕竟,总有人可以将新的代理代码注入 JVM 并请求值。这意味着对start()stop()的调用也不应该被优化出来。

最新更新