如何定位关于jvm的本地方法位置
chenchuan
2012-09-06
问一下问题 我在查看jdk源代码的时候经常遇到最后的某一个方法是native的,我如何能找到对已的这个native的方法实现在具体的opnjdk代码里面
|
|
xiaoyu
2012-09-07
chenchuan 写道 问一下问题 我在查看jdk源代码的时候经常遇到最后的某一个方法是native的,我如何能找到对已的这个native的方法实现在具体的opnjdk代码里面
一般应该是包名 + 类名 + 方法名 (估计还有什么前缀) java_lang_Object_getClass |
|
337240552
2012-09-10
恩,你可以查下jni资料就明白怎么映射了,然后根据映射规则再拼接搜索
|
|
RednaxelaFX
2012-09-12
chenchuan 写道 问一下问题 我在查看jdk源代码的时候经常遇到最后的某一个方法是native的,我如何能找到对已的这个native的方法实现在具体的opnjdk代码里面
OpenJDK的话,Java里声明为native的方法多数在jdk/src/<platform>/native里可以找到。其中<platform>可以是share,也就是平台中立的代码;也可以是某个具体平台。这个native目录里的结构跟Java源码结构一样是按包名来组织的,不难找。 不过需要提醒的是这些native方法不是“JVM”的,是“类库”的,不在JVM里面。要判断是不是JVM的代码很简单:OpenJDK里不在hotspot目录里的代码都不是JVM的代码。 有些类的方法需要JVM的特殊支持的,可能会在实现里调用JVM_开头的函数。这些函数在hotspot/src/share/vm/prims/jvm.cpp里实现。 有少量native方法确实是纯由JVM来实现的,例如sun.misc.Unsafe里的那些。那些是特例。 |