我通过 SOOT-ECLIPSE 插件设置一个类作为主类,并希望它像单例一样运行。但是我的实现似乎不起作用,因为每次运行我都会得到不同的实例。
我尝试使用包装器并从那里调用单例类,以避免此类被 soot 的类加载器垃圾收集的情况。但我也有不同的情况。
我确认它在一个 JVM 上运行,因为每次运行时我得到的 PID 与每次运行时更改的类的实例是相同的。
我真的很感激对此的任何见解。
public class MyMain{
private static boolean isFirstInstance = true;
private static class MyMainHolder {
private static final MyMain INSTANCE = new MyMain();
}
public static synchronized MyMain getInstance() {
return MyMainHolder.INSTANCE;
}
private MyMain() {
if (MyMainHolder.INSTANCE != null) {
throw new IllegalStateException("Already instantiated");
}
}
public static void main(String[] args) {
System.out.println("PID: " + ManagementFactory.getRuntimeMXBean().getName());
MyMain tmp = getInstance();
}