java - 什么是 premain() 以及它是如何被调用的?

标签 java methods

我从未听说过 premain,我觉得问起来有点愚蠢,但是 the answer of this post建议运行它以获取 Instrumentation 对象。

但是如何调用该函数或如何调用它?

package playground;
import java.lang.instrument.Instrumentation;

public class ObjectSizeFetcher {
    private static Instrumentation instrumentation;

    public static void premain(String args, Instrumentation inst) {
        instrumentation = inst;
    }

    public static long getObjectSize(Object o) {
        return instrumentation.getObjectSize(o);
    }
}

最佳答案

premain 是一种与 java.lang.instrument 包相关的机制,用于加载在 Java 程序中进行字节码更改的“代理”。

java.lang.instrument documentation 中解释了该机制。 .

它的要点是“代理”部署在一个 jar 中,并且该 jar 在其 list 中有一个特殊条目,它告诉检测包在哪里寻找 premain 方法。您引用的来源应该是一个简单的代理。

关于java - 什么是 premain() 以及它是如何被调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27851588/

相关文章:

java - 简单的 Java 方法无论用户输入如何都返回 0

java - 如何避免在递归中使用全局/类级别变量?

java - 如何拥有触摸监听器并且仍然能够滚动

java - 修改 Spring @RolesAllowed 的行为

java - 通过java用记事本打开子目录中的txt

java - 调用方法时如何传递正确的值?

javascript - JS 是否可以在一行中向 html 元素添加一些类并删除一些其他类?

java - Linux Mint 无法安装 JDK

java - 访问父类(super class)中定义的方法 [Java]

java - jls。返回类型可替换。这是什么意思?