沧海一粟

More know, more less

java JNI 实现原理 (六) 调用JNI方法

在前面的博客中提到过调用的JNI的entry是generate_native_entry,也就是说方法generate_native_entry是最终调用的我们的c++写的库文件里的方法

2013-11-16 11:14:07

阅读数:3362

评论数:0

java JNI 实现原理 (五) JNI方法解释调用

Hotspot主要有两种解释器,而下面我们主要讨论的是 Template Intepreter也叫asm interprete解释器, 文章下面的介绍基本都是基于template解释器 我们举一个invokespecial的例子,下面是templateTable方法解释invokespecial的...

2013-11-15 08:25:08

阅读数:3060

评论数:1

java JNI 实现原理 (四) 初始化JNI方法

在调用函数的时候都会在template 解释器中会使用 invokespecial  -> prepare_invoke -> load_invoke_cp_cache_entry -> resolve_cache_and_index 在代码中我们可以看到 case By...

2013-11-15 08:24:12

阅读数:3334

评论数:1

java JNI 实现原理 (三) JNI中的RegisterNatives方法

我们常用javah去生成JNI的头文件,然后去实现自己定义的JNI方法,使用这种方式比较传统,但是我们可以看到定义的格式甚至连名字都必须按照规范 JNIEXPORT jint JNICALL Java_test_symlink (JNIEnv *, jobject, jstring, jst...

2013-11-09 07:07:02

阅读数:9023

评论数:0

java JNI 实现原理 (二) Linux 下如何 load JNILibrary

在博客java JNI (一)虚拟机中classloader的JNILibrary 中讨论了java中的Library 是由classloader 来load的,那我们来看看 classloader是如何去load 一个library的 ClassLoader.c   JNIEXPORT vo...

2013-11-09 06:03:19

阅读数:5072

评论数:0

java JNI 实现原理 (一)虚拟机中classloader的JNILibrary

调用JNI的时候,通常我们使用System.loadLibrary(String libname)来load JNI library, 同样也可以使用System.load(String fileName)来load JNI library,两者的区别是一个只需要设置库的名字,比如如果libA.s...

2013-11-06 14:49:57

阅读数:4480

评论数:1

提示
确定要删除当前文章?
取消 删除
关闭
关闭