如何防止JVM优化死代码?

时间:2012-05-26 19:04:12

标签: jvm jpda

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优化死代码?

1 个答案:

答案 0 :(得分:0)

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