自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 论坛 (51)
  • 收藏
  • 关注

用VS2008编译JVM

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

2008-09-02 14:10:51 41

Core Compiler1 Compiler2

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

2006-12-25 10:44:00 91

JVM内部Thread的实现

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

2006-12-20 15:45:47 256

JVM的Log

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

2006-12-20 14:33:28 219 1

JVM杂记

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

2006-12-18 10:54:24 26

vmSymbols与vmSymbolHandles

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

2006-12-15 14:37:05 75

SystemDictionary

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

2006-12-14 13:57:52 458

initialize_class

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

2006-12-13 15:06:19 56

参数处理

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

2006-12-12 14:31:01 36

解释器

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

2006-12-11 14:28:04 51

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

除了oop和Klass之外还有一个重要的数据结构Handleoop和Klass的定义都在\hotspot\src\share\vm\oops目录下,而Handle的定义则在\hotspot\src\share\vm\runtime目录下。 Handles.hpp、Handles.inline.hpp、Handles.cpp是定义Handle的源文件。从其所在的目录runtime就可以推...

2006-12-08 09:26:51 58

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

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

2006-12-07 15:31:00 59

Threads::create_vm

代码位于\hotspot\src\share\vm\runtime\Thread.cpp  Line 2891~Line 3226这个方法是JVM初始化的主要方法,300多行代码,代码虽然很多,但是思路很清晰,比较容易阅读。 JVM初始化无外乎:解析参数、分配内存、创建内部数据结构、创建主线程、加载系统class等步骤。这些代码均是相当好地被放在各个函数中,代码写的相对直白。 下面讲讲...

2006-12-04 13:40:31 196

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

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

2006-12-04 09:14:23 35

Hotspot 1.7.0 Beta03发布了

今天beta3的代码发布了。我用VS2005编译了它的代码,除了一个无关痛痒的unicode编码错误之外,其他的编译错误都被解决了。 现在剩下的问题是:D:\temp\hotspot\src\share\vm\runtime\vm_version.cppLine 233 这个问题我已经用mail list向开发组报告了,不久的将来就会被fix。我临时的处理办法见这里。...

2006-12-01 10:40:09 32

调试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\...

2006-11-29 12:20:58 100

hotspot\src\share\vm\oops

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

2006-11-22 12:30:32 93

用VS2005编译JVM

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_...

2006-11-21 11:08:59 37

如何编译JVM

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

2006-11-20 13:09:11 138 1

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

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

2006-11-17 13:29:56 372

从哪里入手呢?

这么多行的代码从哪里看呢?我想到了Java.exe。在目前发布的代码中Java.exe的代码还没有被以GPL的协议OpenSource。只好先借助原来发布的代码来阅读Java.exe的实现了。 我用这个 \jdk-1_5_0-src-scsl\j2se\src\windows\bin 来阅读了Java.exe的代码。 Java.exe的实现使用了JNI。也就是说JVM对外暴露的唯一接口...

2006-11-16 13:29:05 36

JVM源代码学习启航

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

2006-11-15 17:05:49 42

空空如也

突发奇想:用SwingWT移植NetBeans

发表于 2006-04-04 最后回复 2006-04-04

ABC == Application Builder for C#

发表于 2006-03-08 最后回复 2006-03-09

Lazarus中文版本计划

发表于 2006-03-06 最后回复 2006-03-07

关于MS VJ++,你有兴趣吗?

发表于 2005-08-03 最后回复 2005-08-03

讨论:用C++/CLI实现VCL.NET,是否可行?

发表于 2004-11-25 最后回复 2004-11-25

接口有什么特点,用它有什么好处,委托有什么特点,用它有什么好处,各举一个例子

发表于 2004-10-22 最后回复 2004-11-25

想从源代码级学习Firebird,请大家提建议

发表于 2004-02-23 最后回复 2004-03-02

如何动态创建Foxpro表

发表于 2003-11-04 最后回复 2003-11-08

讨论:自底向上改写VCL是否可行?

发表于 2003-10-14 最后回复 2003-10-15

关于PowerScript的版权

发表于 2003-05-19 最后回复 2003-08-03

C#Builder的编译器竟然不是Borland自己写的?

发表于 2003-07-12 最后回复 2003-07-17

DataSet和DataAdapter更新数据,如何保证某一列的值唯一

发表于 2003-06-03 最后回复 2003-06-03

用ManagedC++写WinForm的时候,出现控制台,如何去掉?

发表于 2003-05-29 最后回复 2003-05-29

寻找:局域网及时通讯程序的原代码

发表于 2002-07-09 最后回复 2003-05-06

如何控制命令行编译(dcc32.exe)

发表于 2003-01-22 最后回复 2003-04-29

用C#开发PB

发表于 2003-04-27 最后回复 2003-04-27

用C#开发PB

发表于 2003-04-19 最后回复 2003-04-21

开放源代码旅行社管理软件—计划中

发表于 2003-04-10 最后回复 2003-04-11

开始学习Java了,先给大家送点分,喜欢Eclipse的请进!

发表于 2003-04-08 最后回复 2003-04-08

有没有Open Watcom C++的爱好者

发表于 2003-02-20 最后回复 2003-02-22

alphax(尽我所知帮助你吧):请进

发表于 2002-12-01 最后回复 2002-12-17

有没有和dotNet里面System.Reflection.Emit对应的class

发表于 2002-11-06 最后回复 2002-12-10

如何结贴?

发表于 2002-12-01 最后回复 2002-12-01

寻:用Delphi写SQLServer扩展存储过程的例子

发表于 2002-11-26 最后回复 2002-12-01

VS.net里面怎么知道所编译的project的总代码行数

发表于 2002-11-14 最后回复 2002-11-14

在WindowsXP下无法浏览论坛内容,只能看到xml文件,为什么?怎么办?

发表于 2002-09-16 最后回复 2002-09-19

pascal里面的集合(set)在C#里面如何表达?

发表于 2002-09-12 最后回复 2002-09-12

Asp.net错误

发表于 2002-08-23 最后回复 2002-08-23

ADO连接SQLServer,哪些dll必须

发表于 2002-05-13 最后回复 2002-05-13

AppServer的安装序列号

发表于 2002-03-28 最后回复 2002-03-28

关于inherited的问题

发表于 2002-03-18 最后回复 2002-03-19

Delphi的代码转换为BCB的代码(initialization, finalization)

发表于 2002-03-11 最后回复 2002-03-13

DBGrid的Options属性的疑问

发表于 2002-02-08 最后回复 2002-02-08

Snap如何翻译?

发表于 2002-02-06 最后回复 2002-02-06

一个有8000种情况分支的switch语句

发表于 2002-01-22 最后回复 2002-01-28

ActiveForm技术过时了吗?

发表于 2001-09-17 最后回复 2002-01-18

SqlServer2000的问题:如何获得局域网里面所有的server实例的名字

发表于 2001-11-15 最后回复 2001-11-30

求控件:TBitBtn、TSpeedButton的图像能放在dll里面

发表于 2001-10-18 最后回复 2001-10-24

DBGrid问题:输入浮点数不正确的时候如何自己处理提示信息

发表于 2001-09-28 最后回复 2001-09-28

3层如何写查询代码?

发表于 2001-09-11 最后回复 2001-09-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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