JVM详解 本文详细讲解了JVM(Java Virtual Machine)的方方面面,首先由java的特性来描绘VM 的大致应用,再细细阐述了VM的原理及内存管理机制和调优.最后讲述了与VM密切相 关的Java GC机制 本文内容大多来自网络,但内容十分丰富,是学习VM的好资料。 后面会再针对V的两大职责class loader和execution engine进行讲解 若有疑问<ymkyve501 @gmail.com》 月录 Java相关 .2 1.1Java定义 .2 1.2Java的开发流程 2 1.3Java运行的原理 3 1.4半编译半解释. 双 1.5平台无关性 .5 JVM内存模型 .5 2.1JVM规范 .6 2.2 Sun JVM........... .9 2.3 SUN JVM内存管理(优化) 10 2.4 SUN JVM调优… 13 2.5.JVM简单理解. .16 2.5.1Java栈. 16 2.5.2堆 16 2.5.3堆栈分离的好处…19 2.5.4堆(heap)和栈(stack) 19 JAVA垃圾收集器 .20 3.1垃圾收集简史 20 3.2常见的垃圾收集策略.… .20 3.2.1 Reference Counting(引用计数) .20 3.2.2跟踪收集器. …21 3.3JVM的垃圾收集策略… .25 3.3.1 Serial Collector...... .25 3.3.2 Parallel Collector........... ,25 3.3.3 Concurrent Collector....... .26 Java虚拟机(VM)参数配置说明… 26
JVM 详解 本文详细讲解了 JVM(Java Virtual Machine)的方方面面,首先由 java 的特性来描绘 JVM 的大致应用,再细细阐述了 JVM 的原理及内存管理机制和调优.最后讲述了与 JVM 密切相 关的 Java GC 机制. 本文内容大多来自网络,但内容十分丰富,是学习 JVM 的好资料. 后面会再针对 JVM 的两大职责 class loader 和 execution engine 进行讲解 若有疑问<ymkyve501@gmail.com> 目录 Java 相关............................................................................................................................. 2 1.1Java 定义.............................................................................................................. 2 1.2Java 的开发流程.................................................................................................. 2 1.3Java 运行的原理.................................................................................................. 3 1.4 半编译半解释...................................................................................................... 4 1.5 平台无关性.......................................................................................................... 5 JVM 内存模型 ................................................................................................................... 5 2.1 JVM 规范.............................................................................................................. 6 2.2 Sun JVM............................................................................................................... 9 2.3 SUN JVM 内存管理(优化)................................................................................ 10 2.4 SUN JVM 调优.................................................................................................... 13 2.5.JVM 简单理解.................................................................................................... 16 2.5.1 Java 栈................................................................................................... 16 2.5.2 堆............................................................................................................ 16 2.5.3 堆栈分离的好处.................................................................................... 19 2.5.4 堆(heap)和栈(stack)......................................................................... 19 JAVA 垃圾收集器 ............................................................................................................. 20 3.1 垃圾收集简史.................................................................................................... 20 3.2 常见的垃圾收集策略........................................................................................ 20 3.2.1 Reference Counting(引用计数)....................................................... 20 3.2.2 跟踪收集器............................................................................................ 21 3.3 JVM 的垃圾收集策略......................................................................................... 25 3.3.1 Serial Collector.................................................................................... 25 3.3.2 Parallel Collector ..................................................................................... 25 3.3.3 Concurrent Collector................................................................................ 26 Java 虚拟机(JVM)参数配置说明................................................................................ 26
Java相关 1.1Java定义 一种简单、面向对象、分布式、跨平台、半编译半解释、健壮、 安全、高性能、多线程的动态的语言一Sun定义 1.2Java的开发流程
Java 相关 1.1Java 定义 1.2Java 的开发流程
Java程序的开发流程★ class HelloWorld public static void main(String args[]){ 编写并运行杞序 System.out.printin("Hello Hello World World!"): 输写0a源程序,并保行 保存HelloWorld源代码 后级名java 保存后做名为 ·所有代码必须保存为扩展名 a的文件 java ·源文件名称必须和类名相同 ·class关键字后面的即类名 ,class文件 正确的文件名为: HelloWorld.java 编译源代码: 运行va文#务 javac HelloWorld.java 运行结果 Hello World 运行程序: 在0口下 生成结果 java HelloWorld 1.3Java运行的原理
1.3Java 运行的原理
Java运行的原理 A.java B.java C.java A.class B.class C.class 通过本 ↓↓↓ 地或网 络传输 Java Java Java Java编译器 Class 虚拟机 虚拟机 虚拟机 文件 A.class B.class C.class Object.class String.class 程序的class:文件 Java API的Class文件 Java运行的原理 av治源程序(村展名为java JVM (Java Virtual achine)一Java虚拟机 ava字节码文件(由打展名为.class) √一个虚构出来的计算机 行 √通过在实际的计算机上仿 JVM撞概机 真模拟各种计算机功能来 Linux卜的 能节依解箱 实现的。 ava字节码 Jav节 解释程序 的CPU √Java虚拟机有自己完善的硬 件架构如处理器、堆栈、 机机器指 寄存器等,还具有相应的指 Windows 令系统。 操作系统 操作系绕 1.4半编译半解释
1.4 半编译半解释
·半编译半解释? √系统先将用户输入的指令翻译成一种通用的,比较规则的中间形 式的代码,保密性强,运行时则由所在机器的解释器进行解释 √java语言的开发效率高,但执行效率低。(相当于c++的 55%) Source Code puble class HalloWorld public ste void mainString arg) Naf学achine古Cada Syster.out printnHello Wond) Compiler 广Interprte Class File Load Java Virtual Bylecode Machine 1.5平台无关性 平台无关性? 何谓平台:即一套特定的硬件再加上运行其上的操作系统,即硬件十软件。编程 语言对不同平台的支持有所不同。(VB、C/C+、Java) Java完全不用修改任何源代码,也不用重新编译就可以直接移植到其他平台。 √Java的平台无关性给程序的部署带来了很大的灵活性,节约开发和升级成本。 怎样理解平台无关性呢?JVM(java Virtual Machine)起到了主要作用。JM是运 行在平台之上的程序,它能够虚拟出一台目标机,所有字节码就是在虚拟出的目 标机上运行。 程序不可能在所有的平台上都可以运行:(1)因为不同平台的内存管理模式和 CPU的指令集等都有很大的差别。(2)为了让java实现平台无关性,Sun公司在不 同平台上用软件模拟出虚拟目标机,虚拟出CPU指令集和内存。(3)因此虽然平 台间的差异比较大,但是虚拟出来的JVM是完全一样的。(4)Java的字节码仅仅 运行在JVM上,不会和平台的底层直接打交道。(5)JM根据平台的不同,把字节 码解释成不同的本地代码(6)JVM就像翻译,把通用的普通话翻译成不同地方特 色的方言。 √但是有一个缺点:java代码必须要经过JVM解释才能运行,使得java运行的效率降 低。 √WORA:Write Once,.Run Anywhere(一次编写,到处运行) JVM内存模型
1.5 平台无关性 JVM 内存模型