JNI_CreateJavaVM位于jni.cpp中。
很显然JNI_CreateJavaVM也只是一个Wrapper,它调用了Threads::create_vm
其中有意思的代码是:
result = Threads::create_vm((JavaVMInitArgs*) args, &can_try_again);
if (result == JNI_OK) {
JavaThread *thread = JavaThread::current();
/* thread is thread_in_vm here */
*vm = (JavaVM *)(&main_vm);
*(JNIEnv**)penv = thread->jni_environment();
//.....
}
vm和penv是JNI_CreateJavaVM的入口参数。
来看看vm参数是如何获得的。
vm实际上就被指向了全局变量main_vm。
jni.cpp line 2782
extern struct JavaVM_ main_vm;
jni.cpp line 3157
struct JavaVM_ main_vm = {&jni_InvokeInterface};
这里有一个C的语法知识点: extern变量的声明和定义。
line 2782是一个声明,line 3157 才是main_vm的定义。
在jvmtiExport.cpp、os.cpp、thread.cpp中引用了main_vm这个全局变量。
分享到:
相关推荐
标题中的"Linux环境OpenJDK8U-jdk-x64-linux-hotspot-8u372b07.tar.gz"指的是在Linux操作系统环境下使用的OpenJDK 8的更新版本(Update 372,Build 7)的HotSpot虚拟机实现。OpenJDK是一个开源的Java开发工具包,它...
OpenJDK8U-jdk_aarch64_linux_hotspot_8u252b09.tar.gz 是一个针对aarch64(也称为ARM64或AArch64)架构的Linux系统的OpenJDK(Open Java Development Kit)版本。这个压缩包包含的是OpenJDK 8 Update 252(8u252b09...
OpenJDK8U-jdk_x64_windows_hotspot_8u242b08.msi java jdk8版本
最新的jdk OpenJDK8U-jdk_x64_windows_hotspot_8u222b10.msi
OpenJDK8U-jdk_x64_windows_hotspot_8u312b07.msi适用于Windows系统。 Eclipse Temurin 项目提供了高质量的、经过 TCK 认证的 OpenJDK 运行时和相关技术,可在整个 Java生态系统中使用。
OpenJDK8U-jdk_x64_linux_mac_hotspot_8u212b03.zip是一个包含针对Linux和Mac操作系统64位架构的OpenJDK 8的Hotspot编译版本的压缩文件。OpenJDK是Java Development Kit(JDK)的一个开源实现,它由Oracle公司和其他...
HotSpot VM以其高性能而著名,它能够通过即时编译(Just-In-Time, JIT)将频繁执行的Java字节码转化为本地机器代码,从而提高运行效率。HotSpot还具有动态优化的能力,能够随着时间的推移持续改进性能。 8u275b01是...
openjdk8 安装包,整thingsboard用的
%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB`则启动HSDB。 HSDB是HotSpot虚拟机的调试桥,它可以连接到正在运行的JVM并提供对堆、栈、方法等的检查。在HSDB会话中,`universe`命令显示了堆的参数和状态。这里...
OpenJDK8U-jdk_x64_windows_hotspot_8u302b08.zip是一个针对Windows操作系统的64位版本的OpenJDK 1.8更新302(8u302)的软件包,其中包含了HotSpot虚拟机。OpenJDK是Java Development Kit(JDK)的一个开源实现,由...
OpenJDK8U-jdk_x64_linux_hotspot_8u265b01.tar.gz 是一个针对64位Linux操作系统的OpenJDK 8更新版本265的压缩包,由AdoptOpenJDK社区提供。AdoptOpenJDK是一个开源项目,致力于为Java开发人员提供高质量、经过验证...
OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz 是一个针对64位Linux操作系统的OpenJDK 8更新版本(Update 232)的压缩包,其中包含了Java Development Kit(JDK)。OpenJDK是一个开源的Java平台实现,它遵循GNU ...
HotSpot 热点服务认证系统架设.doc
OpenJDK8U-jdk_x64_windows_hotspot_8u282b08.zip 是一个针对Windows 64位操作系统的OpenJDK 8更新版本的压缩包,其中包含的是HotSpot虚拟机实现。OpenJDK是Java Development Kit(JDK)的一个开源实现,由甲骨文...
java JDK1.8 下载包,使用范围最广的jdk。java学习必备,java环境。 java JDK1.8 下载包,使用范围最广的jdk。java学习必备,java环境。 java JDK1.8 下载包,使用范围最广的jdk。java学习必备,java环境。
OpenJDK11U-jdk_x64_linux_hotspot_11.0.7_10.tar.gz 是一个针对Linux平台的OpenJDK 11更新版本的压缩包。OpenJDK(Open Java Development Kit)是Java开发工具的开源实现,它提供了用于编写、调试和运行Java应用...
OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.23_9.tar.gz
OpenJDK12U-jdk_x64_windows_hotspot_12.0.2_10.7z.001
标题“hotspot-37240c1019fd.zip”暗示了这是一个与Java HotSpot虚拟机相关的压缩文件。HotSpot是Oracle JDK(Java Development Kit)的一部分,它是一个高性能的Java虚拟机(JVM),能够解释并编译Java字节码。...