目录
一 为什么要学习JVM
- 面试的需要(BATJ、TMD,PKQ等面试都爱问)
- 中高级程序员必备技能(项目管理、调优的需求)
- 追求极客的精神(垃圾回收算法、JIT、底层原理等)

二 了解JVM
2.1 什么是JVM
JVM是Java Virtual Machine(JAVA虚拟机)的缩写。
JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
2.2 虚拟机与Java虚拟机
- 虚拟机:
所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。
- Java虚拟机
Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。
JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。
Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。
特点:自动内存管理,自动垃圾回收。
JVM的位置:

三 JVM结构
3.1JVM的整体结构图

3.2 JVM的生命周期
-
虚拟机的启动:
Java虚拟机的启动是通过引导类加载器创建一个初始类来完成的,这个类是由虚拟机的具体实现指定的。
-
虚拟机的执行:
一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。
-
虚拟机的退出:
虚拟机的推出有一下几种情况 :
1. 程序正常执行结束
2. 程序在执行过程中遇到了异常或错误而异常终止
3. 由于操作系统用现错误而导致Java虚拟机进程终止
4. 线程调用Runtime类或system类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。
四 类加载子系统
4.1 类加载器与类的加载过程

- 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。
- ClassLoader(类加载器)只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。
-
加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量
468

被折叠的 条评论
为什么被折叠?



