标签: java-attach-api

Java Attach API使用什么进程间通信机制?

我试图找出主要操作系统上Java Attach API使用的进程间通信机制,但我似乎找不到对底层机制的太多引用.

我发现的唯一提及是在这里它指的是由Sun公司开发的,前一段时间的DOORS进程间通信机制 但我怀疑这是在Windows或Mac上使用的.大多数文章描述了Java Attach API以及如何加载共享库/ DLL,但是没有说明jvisualvm和本地JVM进程之间的通信是如何实际工作的.

这里提到tools.jar并且libattach.so(在Unix系统上)或attach.dll(在Windows上)负责支持Attach API,但我找不到很多关于它们如何在内部工作的细节.

那么Java Attach API的进程间通信如何在每个主流操作系统上运行?也就是Windows,Mac OSX和Linux.

java ipc java-attach-api

7
推荐指数
2
解决办法
417
查看次数

转换类无效

根据本教程,我尝试使Java代理正常工作。 https://www.baeldung.com/java-instrumentation#loading-a-java-agent

我知道[Agent] Transforming class TestApplication 我没有错误,但是看不到转换类的任何效果。

最终,我希望同时使静态负载和动态负载都能工作,但现在我主要关注静态方式。


public class Static_Agent {

    public static void premain(String agentArgs, Instrumentation inst) {
        String[] tokens = agentArgs.split(";");
        String className = tokens[0];
        String methodName = tokens[1];

        System.out.println(">> "+className);
        System.out.println(">> "+methodName);
        transformClass(className, methodName, inst);
    }



    public static void transformClass(String className, String methodName, Instrumentation instrumentation) {
        Class<?> targetCls = null;
        ClassLoader targetClassLoader = null;
        // see if we can get the class using forName
        try {
            targetCls = Class.forName(className);
            targetClassLoader = targetCls.getClassLoader();
            transform(targetCls, methodName, targetClassLoader, …
Run Code Online (Sandbox Code Playgroud)

java agent javaagents javassist java-attach-api

7
推荐指数
1
解决办法
167
查看次数

标签 统计

java ×2

java-attach-api ×2

agent ×1

ipc ×1

javaagents ×1

javassist ×1