Как предотвратить оптимизацию мертвого кода с помощью 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 Platform Debugger Architecture) для обнаружения вхождения Marker.start() и Marker.end() из внешнего приложения. Однако я думаю, что код может быть оптимизирован / устранен с помощью JVM. Как предотвратить оптимизацию мертвого кода с помощью JVM?
1 ответ
Вы могли бы, например, создать подделку int
переменная где-то в классе Marker
и увеличивать / уменьшать его значение в start()
а также end()
методы. Я не думаю, что какой-либо оптимизатор мог бы удалить поле экземпляра из класса, даже если значение нигде не используется. В конце концов, кто-то всегда может внедрить новый код агента в JVM и запросить значение. Это означает призывы к start()
а также stop()
не должен быть оптимизирован, либо.