自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

用VS2008编译JVM

用VS2008编译JVM 目前JVM的编译脚本还不支持VS2008,所以本方法属于玩票。 先做如下修改 1、\hotspot\make\windows\makefiles\compile.make Line 53 改为 CPP_FLAGS=/nologo /W3 /W...

2008-09-02 14:10:51

阅读数 20

评论数 0

Core Compiler1 Compiler2

目前OpenJDK公开的文档中只是对Compiler1和Compiler2做了解释,对Core并没有太多的解释。 先看官方的解释 C1 compiler Fast, lightly optimizing bytecode compiler. Performs some value number...

2006-12-25 10:44:00

阅读数 46

评论数 0

JVM内部Thread的实现

这是个棘手的话题,到目前为止,我也没有看得太明白。先记录下我现在的一些理解。   先看几个主要的class Thread、VMThread、JavaThread、OSThread VMThread和JavaThread都是Thread的子类,而OSThread的父类是CHeapObj。所以,OST...

2006-12-20 15:45:47

阅读数 136

评论数 0

JVM的Log

JVM在调试版本下,会输出hotspot.log。通过参数-Xloggc:FileName,来设置GC的log。   Log的实现主要在   \hotspot\src\share\vm\utilities\ostream.hpp   \hotspot\src\share\vm\utilities\...

2006-12-20 14:33:28

阅读数 154

评论数 0

JVM杂记

又一个在VS2005下编译错误的解决办法   周末重装了OS,连带VS2005也重新安装了。 这次又遇到了编译JVM的错误,很是纳闷,突然想起来这次我用的VS2005和我原来用的不一样。 这次我的Version是真正的中文版,cl.exe编译器输出的信息完全是中文的。   解决办法: 把 \hot...

2006-12-18 10:54:24

阅读数 14

评论数 0

vmSymbols与vmSymbolHandles

vmSymbols和vmSymbolHandles这两个都是只拥有静态成员和方法的class。 其定义在:\hotspot\src\share\vm\memory\vmSymbols.hpp 用来缓存JVM内部常用的symboleOop和symboleHandle。 例如:    symbolOo...

2006-12-15 14:37:05

阅读数 53

评论数 0

SystemDictionary

SystemDictionary正如它所暗示的那样,它是用来保存系统信息的一个字典,其实现基于Hash表。 它保存了系统已经加载了class信息。 下面是SystemDictionary保存class信息的变量。   static Dictionary*        _dictionary;  ...

2006-12-14 13:57:52

阅读数 290

评论数 0

initialize_class

initialize_class函数位于:\hotspot\src\share\vm\runtime\Thread.cpp 作用:完成一个java class从磁盘文件加载到JVM内部数据结构(oop)这一个过程。   先看它的定义 static void initialize_class(sym...

2006-12-13 15:06:19

阅读数 27

评论数 0

参数处理

JVM.dll作为了一个引擎性质的dll,外部与其交互的接口除了各个function, 可配置的参数也是很重要的一个途径。   JNI编程中,通过JavaVMOption向JVM传递参数。   HotSpot代码中对于参数的处理主要分为两部分。 一个是由命令行参数解析出各个用户配置的值,并把这个...

2006-12-12 14:31:01

阅读数 15

评论数 0

解释器

解释器的初始化 JNI_CreateJavaVM | |-->  Threads::create_vm    |    |--> init_globals       |       |-->interpreter_init          |     ...

2006-12-11 14:28:04

阅读数 17

评论数 0

class的实例在JVM中的内部表示(续)

除了oop和Klass之外还有一个重要的数据结构Handle oop和Klass的定义都在\hotspot\src\share\vm\oops目录下, 而Handle的定义则在\hotspot\src\share\vm\runtime目录下。   Handles.hpp、Handles.inli...

2006-12-08 09:26:51

阅读数 30

评论数 0

class的实例在JVM中的内部表示

今天来看一个class的实例在JVM中的内部表示。 先看下面的简图。  http://leejingbo.iteye.com/upload/picture/pic/1344/23ed1678-2fa5-4fa6-bdf9-fe15320f4a24.jpg   这是对应的代码。 class in...

2006-12-07 15:31:00

阅读数 46

评论数 0

Threads::create_vm

代码位于\hotspot\src\share\vm\runtime\Thread.cpp  Line 2891~Line 3226 这个方法是JVM初始化的主要方法,300多行代码,代码虽然很多,但是思路很清晰,比较容易阅读。   JVM初始化无外乎:解析参数、分配内存、创建内部数据结构、创建主线...

2006-12-04 13:40:31

阅读数 49

评论数 0

编译hotspot-7-ea-src-b03-30_nov_2006出错的原因

给开发者发了mail,很快就得到了回复。   \hotspot\src\share\vm\runtime\vm_version.cpp Line 233的编译错误的原因是: 环境变量USERNAME为中文引起。   所以目前的解决办法就是 在运行编译脚本前,把USERNAME设置为ASCII字符串...

2006-12-04 09:14:23

阅读数 19

评论数 0

Hotspot 1.7.0 Beta03发布了

今天beta3的代码发布了。 我用VS2005编译了它的代码,除了一个无关痛痒的unicode编码错误之外, 其他的编译错误都被解决了。   现在剩下的问题是: D:\temp\hotspot\src\share\vm\runtime\vm_version.cpp Line 233   这个...

2006-12-01 10:40:09

阅读数 19

评论数 0

调试jvm.dll

阅读JVM代码的方法之一就是写一个JNI程序,然后单步跟踪代码。   一、编译出jvm.dll的debug版本。    在我的机器上我用了这个编译命令:build debug compiler1 D:\temp\hotspot C:\Java\jdk1.7.0    编译的详细方法,可以参考这里。...

2006-11-29 12:20:58

阅读数 23

评论数 0

hotspot\src\share\vm\oops

oop是ordinary object pointer的缩写。 hotspot\src\share\vm\oops下的文件描述和了Java Class在JVM中的内部数据结构。

2006-11-22 12:30:32

阅读数 52

评论数 0

用VS2005编译JVM

VC++2005编译器和Lib相对VC++2003做了不少改动,因此编译JVM代码的时候需要作一些修改。 先读这个。  一、hotspot\build\windows\makefiles\compile.make     Line51:CPP_FLAGS=/nologo /W3 /WX    ...

2006-11-21 11:08:59

阅读数 28

评论数 0

如何编译JVM

这里的JVM是指Sun以GPL开源的Hotspot JVM   在Sun提供的编译文档中说明需要使用MKS工具。现在MKS工具几乎无法搞到,于是我使用cygwin来替代。   编译步骤: 一、安装cygwin。假设cygwin安装在c:\cygwin。那么把c:\cygwin\bin加入环境变量P...

2006-11-20 13:09:11

阅读数 96

评论数 1

hotspot\src\share\vm\prims\jni.cpp

JNI_CreateJavaVM位于jni.cpp中。 很显然JNI_CreateJavaVM也只是一个Wrapper,它调用了Threads::create_vm 其中有意思的代码是:   result = Threads::create_vm((JavaVMInitArgs*) args, &...

2006-11-17 13:29:56

阅读数 173

评论数 0

从哪里入手呢?

这么多行的代码从哪里看呢?我想到了Java.exe。 在目前发布的代码中Java.exe的代码还没有被以GPL的协议OpenSource。 只好先借助原来发布的代码来阅读Java.exe的实现了。   我用这个 \jdk-1_5_0-src-scsl\j2se\src\windows\bin 来阅...

2006-11-16 13:29:05

阅读数 19

评论数 0

JVM源代码学习启航

为了记录下学习JVM源代码的点点滴滴,在JavaEye开博。

2006-11-15 17:05:49

阅读数 20

评论数 0

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