gpt4 book ai didi

java - 不同的Java应用程序可以使用相同的javaagent吗?

转载 作者:行者123 更新时间:2023-11-30 02:50:02 24 4
gpt4 key购买 nike

我有一个 javaagent Jar simpleAgent.jar。我用它来重新定义其中的类,并缓存了一些类以避免重新定义

 public class Premain {

private static Instrumentation instrumentation;

private static final Map<String, Class> allLoadClassesMap = new ConcurrentHashMap<>();

public static void premain(String agentArgs, Instrumentation inst) {
instrumentation = inst;
cacheAllLoadedClasses("com.example");
}

public static void cacheAllLoadedClasses(String prfixName) {
try {
Class[] allLoadClasses = instrumentation.getAllLoadedClasses();
for (Class loadedClass : allLoadClasses) {
if (loadedClass.getName().startsWith(prfixName)) {
allLoadClassesMap.put(loadedClass.getName(), loadedClass);
}
}
logger.warn("Loaded Class Count " + allLoadClassesMap.size());
} catch (Exception e) {
logger.error("", e);
}
}
}

我有三个不同的应用程序app1.jarapp2.jarapp3.jar,所以当我启动这三个应用程序时我可以使用相同的代理 jar ?例如:

java -javaagent:simpleAgent.jar -jar app1.jar
java -javaagent:simpleAgent.jar -jar app2.jar
java -javaagent:simpleAgent.jar -jar app3.jar

我不知道javaagent的实现,所以我担心使用相同的javaagent会在app1或app2或app3中触发崩溃。

最佳答案

每个 JVM 实例都是独立的,并且不“了解”其他 JVM,除非您在应用程序级别执行某些操作。因此,通常答案是“是的,您可以根据需要对任意数量的 JVM 实例使用同一个 jar,无论是 javaagent 还是不使用。”

关于java - 不同的Java应用程序可以使用相同的javaagent吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38990345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com