java - 如何从JVM源码中找到native方法?

标签 java jvm

我发现 ClassLoader 调用了一些 JVM 本地代码,所以我尝试从下面的 JVM 源代码中检查这些本地代码,例如我想检查方法 defineClass1 ,但是我发现我无法获取它们。 请问如何根据Java代码调用的native代码找到相关的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);

最佳答案

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

但是这些方法最终都是通过HotSpot-specific回调到JVM JVM_DefineClassWithSource API。此 JVM 功能的实现在 HotSpot 存储库中,请参阅 src/share/vm/prims/jvm.cpp

关于java - 如何从JVM源码中找到native方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40217559/

相关文章:

java - maven 依赖项升级后 Jenkin 构建失败

带有 unicode 字符的 Java 类名未运行

java - 为什么 Grails 在 Mac OS x 7 上使用旧的 JVM 编译器?

java - 尝试在 java 中设置 double 组时出现 NullPointerException

java - 如何本地化 GWT 客户端代码中的枚举值?

java - getClassloader 返回 null 而不是引导类加载器

Java:new、inheritance和objects number

jvm - JRE 架构依赖项(在 MIPS 上运行)

java - 寻找 Java 拼写检查器库

java - 有没有办法获得 MP Android 条形图的条形宽度(以 px/dp 为单位)?