目录
一、JVM概述
1、1为什么要学习JVM
1、2虚拟机
1、3JVM作用
1、4JVM整体组成部分
二、JVM结构--类加载器
2、1类加载子系统
2、2类加载过程
2、2、1加载
2、2、2链接
2、2、3初始化
2、3类加载器分类
2.3.1 引导类加载器(启动类加载器 BootStrap ClassLoader)
2.3.2 扩展类加载器(Extension ClassLoader)
2.3.3 应用程序类加载器(系统类加载器 Application ClassLoader)
2.4 双亲委派机制
2.5 如何打破双亲委派机制
三、JVM运行时数据区
3、1运行时数据区组成概述
3.1.1 程序计数器(Program Counter Register)
3.1.2Java 虚拟机栈(Java Virtual Machine Stacks)
3.1.3 本地方法栈(Native Method Stack)
3.1.4Java 堆(Java Heap)
3.1.5 方法区(Methed Area)
3.2.程序计数器(Program Counter Register)
3.3.Java 虚拟机栈(Java Virtual Machine Stacks)
3.4.本地方法栈(Native Method Stack)
3.5.Java 堆内存
3.5.1Java堆内存概述
3.5.2堆内存区域划分
3.5.3 为什么分区(代)?
3.5.4 对象创建内存分配过程
3.5.5 新生区与老年区配置比例
3.5.6 分代收集思想 Minor GC、Major GC、Full GC
3.5.7 堆空间的参数设置
3.5.8 字符串常量池
3.6方法区
3.6.1 方法区的基本理解
3.6.2 方法区大小设置
3.6.3 方法区的内部结构
3.6.4 方法区的垃圾回收
四、本地方法接口
4.1 什么是本地方法
4.2 为什么要使用 Native Method
五、执行引擎
5.1 概述
5.2 什么是解释器?什么是 JIT 编译器?
5.3 为什么 Java 是半编译半解释型语言?
六、垃圾回收
6.1 垃圾回收概述
6.1.1 概述
6.1.2 什么是垃圾?
6.1.3 为什么需要 GC?
6.1.4 早期垃圾回收
6.1.5Java 垃圾回收机制
6.2 垃圾回收相关算法
6.2.1 垃圾标记阶段算法
6.2.2 垃圾回收阶段算法
6.3 垃圾回收相关概念
6.3.1System.gc() 的理解
6.3.2 内存溢出与内存泄漏
6.3.3Stop the World
6.4 垃圾回收器
6.4.1 垃圾回收器概述
6.4.2 垃圾回收器分类
6.4.3GC 性能指标
6.4.4HotSpot 垃圾收集器
6. 4.5CMS 回收器
6.4.6G1(Garbage First)回收器
6.4.7 查看 JVM 垃圾回收器设置垃圾回收器
一、JVM概述
1、1为什么要学习JVM
中高程序员必备技能:
项目管理、性能调优
1、2虚拟机
- 虚拟机(Virtual Machine),虚拟计算机。他是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。
- VMware属于系统虚拟机,完全对物理计算机的仿真,提供一个可运行完整操作系统的平台。程序虚拟机的典型代表是java虚拟机,专门为执行某个计算机程序而设计。
在java虚拟机中执行的指令称为java字节码指令。 - Java虚拟机是一种执行java字节码文件的虚拟机,它拥有独立的运行机制。
- Java技术的核心就是Java虚拟机,因为所有的java程序都要在java虚拟机内部运行。
1、3JVM作用
Java虚拟机负责装载字节码到其内部,解释/编译为对应平台上的机器码指令执行,每一条java指令,java虚拟机中都有详细定义,如怎么取操作数,怎么处理操作数,处理结果放在哪。
特点:
- 一次编译到处运行;
- 自动内存管理;
- 自动垃圾回收功能;
现在的JVM不仅可以执行java字节码文件,还可以执行其他语言编译后的字节码文件,是一个跨语言平台。
1、4JVM整体组成部分
- 类加载器(ClassLoader)
- 运行时数据区(Runtime Data Area)
- 执行引擎(Execution Engine)
- 本地库接口(Native Interface)
程序在执行之前先要把 java 代码转换成字节码(class 文件),jvm 首先需要把字节码通过一定的方式 类加载器(ClassLoader) 把文件加载到内存中的运行时数据区(Runtime Data Area) ,而字节码文件是 jvm 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器 执行引擎(Execution Engine) 将字节码翻译成底层系统指令再交由CPU 去执行,而这个过程中需要调用其他语言的接口 本地库接口(Native
Interface) 来实现整个程序的功能,这就是这 4 个主要组成部分的职责与功能。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/20191.html