- 浏览: 53810 次
- 性别:
- 来自: 大连
最新评论
-
funnyone:
...
class的实例在JVM中的内部表示 -
dengyigang:
http://dengyigang.iteye.com/blo ...
调试jvm.dll -
jianrc:
我试过编译,但编译出来的只有jvm.lib和jvm.dll等文 ...
Core Compiler1 Compiler2 -
李静波:
rayen_zhang:
请参见 http://leeji ...
调试jvm.dll -
rayen_zhang:
请问,选项 core compiler1 compiler2的 ...
调试jvm.dll
文章列表
阅读JVM代码的方法之一就是写一个JNI程序,然后单步跟踪代码。
一、编译出jvm.dll的debug版本。
在我的机器上我用了这个编译命令:build debug compiler1 D:\temp\hotspot C:\Java\jdk1.7.0
编译的详细方法,可以参考这里。
二、假设jre安装在:C:\Java\jre1.7.0,那么在C:\Java\jre1.7.0\bin下新建一个目录,目录名称自己定,
例如我就给它叫做:MyJVM。把debug版的jvm.dll复制到:C:\Java\jre1.7.0\bin\MyJVM
这一步是因为在默认情况下 ...
- 2006-11-29 12:20
- 浏览 4287
- 评论(3)
oop是ordinary object pointer的缩写。
hotspot\src\share\vm\oops下的文件描述和了Java Class在JVM中的内部数据结构。
- 2006-11-22 12:30
- 浏览 1418
- 评论(0)
VC++2005编译器和Lib相对VC++2003做了不少改动,因此编译JVM代码的时候需要作一些修改。
先读这个。
一、hotspot\build\windows\makefiles\compile.make
Line51:CPP_FLAGS=/nologo /W3 /WX
改 为:CPP_FLAGS=/nologo /W3 /WX /D "_CRT_SECURE_NO_DEPRECATE=1" /D "_CRT_NONSTDC_NO_DEPRECATE=1"
即增加_CRT_SECURE_NO_DEPRECATE 和 ...
- 2006-11-21 11:08
- 浏览 2668
- 评论(0)
这里的JVM是指Sun以GPL开源的Hotspot JVM
在Sun提供的编译文档中说明需要使用MKS工具。现在MKS工具几乎无法搞到,于是我使用cygwin来替代。
编译步骤:
一、安装cygwin。假设cygwin安装在c:\cygwin。那么把c:\cygwin\bin加入环境变量PATH中。
注:使用cygwin/MKS也主要使为了使用sh、cat、cp等Unix命令行工具。
二、打开VS2003命令行。(我使用VS2005编译没有成功,原因还没有去细查)
三、进入 \hotspot\build\windows 文件夹。
在我的电脑上是: ...
- 2006-11-20 13:09
- 浏览 4374
- 评论(0)
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 *) ...
- 2006-11-17 13:29
- 浏览 2827
- 评论(0)
这么多行的代码从哪里看呢?我想到了Java.exe。
在目前发布的代码中Java.exe的代码还没有被以GPL的协议OpenSource。
只好先借助原来发布的代码来阅读Java.exe的实现了。
我用这个 \jdk-1_5_0-src-scsl\j2se\src\windows\bin 来阅读了Java.exe的代码。
Java.exe的实现使用了JNI。也就是说JVM对外暴露的唯一接口就是JNI,即使是Java.exe也没有例外。
\hotspot\src\share\vm\prims 下面应该是JNI的主要代码
在C++中通过JNI创建JVM的第一步是调用JNI_Creat ...
- 2006-11-16 13:29
- 浏览 1954
- 评论(0)