如何防止死代码被JVM优化?

如何防止死代码被JVM优化?,jvm,jpda,Jvm,Jpda,我想使用JPDA(Java平台调试器体系结构)从外部应用程序检测Marker.start()和Marker.end()的出现。然而,我认为JVM可以优化/消除代码。如何防止死代码被JVM优化?例如,您可以在类标记的某处创建一个假的int变量,并在start()和end()方法中增加/减少它的值。我不认为任何优化器可以从类中删除实例字段,即使该值没有在任何地方使用。毕竟,总有人可以向JVM中注入新的代理代码并请求值。这意味着对start()和stop()的调用也不应该得到优化。我将在完成实验后告诉

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

例如,您可以在类
标记
的某处创建一个假的
int
变量,并在
start()
end()
方法中增加/减少它的值。我不认为任何优化器可以从类中删除实例字段,即使该值没有在任何地方使用。毕竟,总有人可以向JVM中注入新的代理代码并请求值。这意味着对
start()
stop()
的调用也不应该得到优化。

我将在完成实验后告诉您结果。我猜优化器会完全跳过Marker.start()的执行。
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;
    }
}