JVM总结

来源:互联网 发布:辐射4女捏脸数据 编辑:程序博客网 时间:2024/05/01 07:04

1、In Action

(1)

(2)


2、TIPS

(1)JVM主要包括两个子系统和两个组件。

两个子系统分别是Classloader子系统和Execution engine(执行引擎)子系统;

两个组件分别是Runtime data area(运行时数据区域)组件和Native interface(本地接口)组件;

 

Classloader子系统的作用:

根据给定的全限定名类名(如:org.cendy.HelloWorld)来装载class文件的内容到Runtime data area中的method area(方法区域);

 

Execution engine(执行引擎)子系统的作用:

执行classes中的指令。任何JVM specification实现(JDK)的核心都是Execution engine,不同的厂商有自己不同的实现。

 

Native interface(本地接口)组件:

与Native libraries交互,是其它编程语言交互的接口。当调用native方法时,就进入了一个全新的且不受JVM限制的世界。但JVM无法控制native heap OutOfMemory。

 

Runtime data area组件:就是常说的JVM的内存。主要有五个部分

heap:

method area:被装载的class的信息存储在method area的内存中。当JVM装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class文件内容并把它传输到JVM中。

stack:

program counter(程序计数器):每一个线程都有自己的PC寄存器,也是该线程启动时创建的。PC寄存器的内容总是指向下一条将被执行指令的地址。

native method stack(本地方法栈):保存native方法进入区域的地址;

 

注:只有heap和method area是被所有线程共享使用的;而stack、program counter、native method statck是以线程为粒度的,每个线程独自拥有自己的部分。

 

方法区:

在JVM实例中,加载的类型的相关信息被保存在内存的一个逻辑区域中,称为方法区。当JVM加载一个类型时,它用类加载器查找需要的class文件。类加载器读入class文件并以二进制数据的线性流传递给JVM。JVM从二进制数据中提取有关类型的信息,并将之保存在方法区中。而保存类里定义的类变量(静态变量)的内存被从方法区中拿走。

 

(2)Sun制定JVM规范:

a、指令集

b、寄存器

c、类文件的格式

d、栈

e、垃圾回收堆

f、存储区

 

(3)


3、PS

(1)调整JVM内存大小


(2)

原创粉丝点击