摘要:它對(duì)應(yīng)的實(shí)現(xiàn)是在中,原始代碼為這里是省略的方法體轉(zhuǎn)換后這里是省略的方法體附錄簡(jiǎn)介
怎么看open jdk native的源碼
類(lèi)的命名與java類(lèi)的命名是一模一樣的
方法的命名為JNI的代碼風(fēng)格
一般關(guān)注下文件頭,如果是系統(tǒng)文件,比如
JVM_ENTRY本身是一個(gè)宏定義,位于interfaceSupport.hpp中
#define JVM_ENTRY(result_type, header) //宏定義,每個(gè)使用這個(gè)名字的地方,都會(huì)被宏的內(nèi)容所替代 extern "C" { //表示編譯器需要按照C的方式編譯 result_type JNICALL header { JavaThread* thread=JavaThread::thread_from_jni_environment(env); ThreadInVMfromNative __tiv(thread); debug_only(VMNativeEntryWrapper __vew;) __ENTRY(result_type, header, thread)
extern "C" 解釋例子宏定義
jvm_entry做了什么
java中有一個(gè)AccessController.doPrivileged方法。它對(duì)應(yīng)的實(shí)現(xiàn)是在jvm.cpp中,原始代碼為
JVM_ENTRY(jobject, JVM_DoPrivileged(JNIEnv *env, jclass cls, jobject action, jobject context, jboolean wrapException)) #這里是省略的方法體 JVM_END
轉(zhuǎn)換后
extern "C" { jobject JNICALL JVM_DoPrivileged(JNIEnv *env, jclass cls, jobject action, jobject context, jboolean wrapException) { JavaThread* thread=JavaThread::thread_from_jni_environment(env); ThreadInVMfromNative __tiv(thread); debug_only(VMNativeEntryWrapper __vew;) __ENTRY(result_type, header, thread) #這里是省略的方法體 } }附錄
JNI 簡(jiǎn)介
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/71592.html
摘要:作為條件變量的的不僅可以認(rèn)為內(nèi)嵌了一把鎖,還內(nèi)嵌了一個(gè)條件變量。操作條件變量的函數(shù)將當(dāng)前線程在條件變量上阻塞,一般是為了等待其他線程的某件事情執(zhí)行完成。其它裝箱類(lèi)其它裝箱類(lèi)的代碼這里就不分析了。重點(diǎn)關(guān)注下各裝箱類(lèi)的緩存范圍。 jdk源碼讀到現(xiàn)在這里,重要的集合類(lèi)也讀了一部分了。集合類(lèi)再往下讀的話,就要涉及到兩個(gè)方向。第一,是比較典型的但是不常用的數(shù)據(jù)結(jié)構(gòu),這部分我準(zhǔn)備將數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)、回...
摘要:我想這很好的解釋了中,僅僅一個(gè)都這么復(fù)雜,在單線程或者說(shuō)串行的程序中,編程往往是很簡(jiǎn)單的,說(shuō)白了就是調(diào)用,調(diào)用,調(diào)用然后返回。 Netty源碼分析(三) 前提概要 這次停更很久了,原因是中途迷茫了一段時(shí)間,不過(guò)最近調(diào)整過(guò)來(lái)了。不過(guò)有點(diǎn)要說(shuō)下,前幾天和業(yè)內(nèi)某個(gè)大佬聊天,收獲很多,所以這篇博文和之前也會(huì)不太一樣,我們會(huì)先從如果是我自己去實(shí)現(xiàn)這個(gè)功能需要怎么做開(kāi)始,然后去看netty源碼,與...
摘要:我們知道,發(fā)起函數(shù)調(diào)用,需要構(gòu)造一個(gè)棧幀。構(gòu)造棧幀的具體實(shí)現(xiàn)細(xì)節(jié)的選擇,被稱(chēng)為調(diào)用慣例。要想完成這個(gè)函數(shù)調(diào)用邏輯,就要運(yùn)行時(shí)構(gòu)造棧幀,生成參數(shù)壓棧和清理堆棧的工作。目前,幾乎支持全部常見(jiàn)的架構(gòu)。 原文:http://nullwy.me/2018/01/java...如果覺(jué)得我的文章對(duì)你有用,請(qǐng)隨意贊賞 遇到的問(wèn)題 前段時(shí)間開(kāi)發(fā)的時(shí)候,遇到一個(gè)問(wèn)題,就是如何用 Java 實(shí)現(xiàn) chdir...
摘要:而我們現(xiàn)在都已經(jīng)發(fā)布了,的都不知道,這有點(diǎn)說(shuō)不過(guò)去了。而對(duì)一個(gè)的讀寫(xiě)也會(huì)有響應(yīng)的描述符,稱(chēng)為文件描述符,描述符就是一個(gè)數(shù)字,指向內(nèi)核中的一個(gè)結(jié)構(gòu)體文件路徑,數(shù)據(jù)區(qū)等一些屬性。 前言 只有光頭才能變強(qiáng) 回顧前面: 給女朋友講解什么是代理模式 包裝模式就是這么簡(jiǎn)單啦 本來(lái)我預(yù)想是先來(lái)回顧一下傳統(tǒng)的IO模式的,將傳統(tǒng)的IO模式的相關(guān)類(lèi)理清楚(因?yàn)镮O的類(lèi)很多)。 但是,發(fā)現(xiàn)在整理的過(guò)程已...
摘要:典型應(yīng)用鎖和同步器框架的核心類(lèi),就是通過(guò)調(diào)用和實(shí)現(xiàn)線程的阻塞和喚醒的,而的方法實(shí)際是調(diào)用的方式來(lái)實(shí)現(xiàn)。 前言 Unsafe是位于sun.misc包下的一個(gè)類(lèi),主要提供一些用于執(zhí)行低級(jí)別、不安全操作的方法,如直接訪問(wèn)系統(tǒng)內(nèi)存資源、自主管理內(nèi)存資源等,這些方法在提升Java運(yùn)行效率、增強(qiáng)Java語(yǔ)言底層資源操作能力方面起到了很大的作用。但由于Unsafe類(lèi)使Java語(yǔ)言擁有了類(lèi)似C語(yǔ)言指針...
閱讀 1765·2019-08-30 12:51
閱讀 764·2019-08-29 17:30
閱讀 3818·2019-08-29 15:17
閱讀 930·2019-08-28 18:10
閱讀 1477·2019-08-26 17:08
閱讀 2294·2019-08-26 12:16
閱讀 3620·2019-08-26 11:47
閱讀 3608·2019-08-23 16:18