- 博客(6)
- 资源 (5)
- 收藏
- 关注
原创 java JNI 实现原理 (六) 调用JNI方法
在前面的博客中提到过调用的JNI的entry是generate_native_entry,也就是说方法generate_native_entry是最终调用的我们的c++写的库文件里的方法
2013-11-16 11:14:07 4647
原创 java JNI 实现原理 (五) JNI方法解释调用
Hotspot主要有两种解释器,而下面我们主要讨论的是 Template Intepreter也叫asm interprete解释器, 文章下面的介绍基本都是基于template解释器我们举一个invokespecial的例子,下面是templateTable方法解释invokespecial的代码void TemplateTable::invokespecial(int byte_no)
2013-11-15 08:25:08 3945
原创 java JNI 实现原理 (四) 初始化JNI方法
在调用函数的时候都会在template 解释器中会使用invokespecial -> prepare_invoke -> load_invoke_cp_cache_entry -> resolve_cache_and_index在代码中我们可以看到 case Bytecodes::_invokevirtual: case Bytecodes::_invokespeci
2013-11-15 08:24:12 4830
原创 java JNI 实现原理 (三) JNI中的RegisterNatives方法
我们常用javah去生成JNI的头文件,然后去实现自己定义的JNI方法,使用这种方式比较传统,但是我们可以看到定义的格式甚至连名字都必须按照规范JNIEXPORT jint JNICALL Java_test_symlink (JNIEnv *, jobject, jstring, jstring);完整的结构是Java_classpath_classname_native m
2013-11-09 07:07:02 12685
原创 java JNI 实现原理 (二) Linux 下如何 load JNILibrary
在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是如何去load 一个library的ClassLoader.c JNIEXPORT void JNICALL Java_java_lang_ClassLoader_00024Nat
2013-11-09 06:03:19 5939
原创 java JNI 实现原理 (一)虚拟机中classloader的JNILibrary
调用JNI的时候,通常我们使用System.loadLibrary(String libname)来load JNI library, 同样也可以使用System.load(String fileName)来load JNI library,两者的区别是一个只需要设置库的名字,比如如果libA.so 只要输入A就可以了,而libA.so的位置可以同过设置 java.library.path 或者
2013-11-06 14:49:57 6240 1
jdk1.6.23 libsaproc.so linux 下amd64架构
2012-02-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人