如何从JVM源代码中找到本机方法?

时间:2016-10-24 11:45:36

标签: java jvm

我发现ClassLoader调用了一些JVM本机代码,所以我尝试从下面的JVM源代码中检查这些本机代码,例如我想检查方法defineClass1,但是我发现我没有得到它们。 请问如何根据从Java代码调用的本机代码找到相关的JVM源代码?

http://hg.openjdk.java.net/jdk7u/jdk7u/hotspot/log?rev=defineClass1

private native Class defineClass0(String name, byte[] b, int off, int len,
                                  ProtectionDomain pd);

private native Class defineClass1(String name, byte[] b, int off, int len,
                                  ProtectionDomain pd, String source);

private native Class defineClass2(String name, java.nio.ByteBuffer b,
                                  int off, int len, ProtectionDomain pd,
                                  String source);

1 个答案:

答案 0 :(得分:3)

上述方法的JNI实现在JDK存储库中,而不在HotSpot中,请参阅src/share/native/java/lang/ClassLoader.c

但是,这些方法最终会通过特定于HotSpot的方式回调JVM JVM_DefineClassWithSource API。此JVM函数的实现位于HotSpot存储库中,请参阅src/share/vm/prims/jvm.cpp