一、 内存管理
1. 内存结构
方法区:
类加载的信息
运行时常量池:来源class文件中的常量池,动态设置常量的API
所有线程共享
PermSpace,MaxPermSpace
堆
存放对象实例
分代收集
Eden
from survior
to survior
old
所有线程共享
-Xmx,-Xms
虚拟机栈
线程执行java方法的调用栈,方法调用的嵌套,对应栈帧的入栈,出栈。
一个方法是一个栈帧。
一个栈帧
局部变量表
操作数栈
一个线程私有。
-Xss
本地方法栈
类似java方法,这里执行本地方法。
程序计数器
一个线程执行到字节码指令列表的哪条指令。
直接内存
执行引擎
本地方法库接口
本地方法库
2. 垃圾回收
如何确定对象是否为垃圾?引用计数算法,根搜索算法。
确定了对象是否为垃圾,然后怎么处理?
垃圾直接回收
非垃圾
标记清除算法
标记哪些是垃圾对象,直接回收,回收空间直接使用
标记复制算法
准备一个和原空间一样大的内存,将标记的删除,将非垃圾的copy到另一个空间去。
发现每次复制的很少,更新成第二版本
一个Eden占90%
两个survior占10%
一开始用一个Eden,一个survior,回收时,将非垃圾对象,copy到另一个survior上。
标记整理算法
将标记的垃圾对象回收,将非垃圾对象整理位置,挪到前面去,剩余空间连续。
分代收集算法*
年轻代用标记复制算法
老年代用标记整理算法
3. 内存监控工具
jps
jstat
jmap
jstack
二、执行引擎
1. class文件结构
2. 加载过程和类加载器
3. 执行引擎确定方法版本,执行方法内字节码,执行时内存结构
三、编译优化
1. 编译期优化
2. 运行期优化
四、并发执行
1. 多线程
2. 并发
相关推荐
以上只是JVM理解的一部分,实际应用中,开发者还需要掌握JVM的热点代码探测(如JIT编译),内存泄漏检测,线程分析,异常处理等多个方面。通过学习《深入理解Java虚拟机》这样的专业书籍,能更全面地了解和掌握JVM,...
全面理解JVM虚拟机.pdf
Java编译器的目标是生成能够被JVM理解的字节码文件。Java源代码文件编译后生成的字节码文件(.class文件),通过JVM将其逐条翻译成特定平台下的机器码,并在此基础上运行。 JVM的工作流程主要包括以下几个步骤: 1...
标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...
1. **字节码**:Java源代码编译后生成的是字节码文件(.class),这些文件包含了可被JVM理解的二进制指令。每个字节码指令由一个单字节的操作码(opcode)和可能的参数组成。 2. **操作码**:JVM指令由操作码标识,...
《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...
每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...
深入理解JVM,首先要明白Java技术的组成部分,包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是...
《JVM规范与深入理解》这个主题涵盖了Java虚拟机(Java Virtual Machine)的全面解析,旨在帮助开发者深入了解JVM的工作原理及其对程序性能的影响。在这个主题中,我们主要关注两个核心资源:周志明的《深入理解Java...
根据提供的文件信息,“圣思园张龙 深入理解jvm”,我们可以推断出这份资料主要关注于Java虚拟机(JVM)的深入理解和实践应用。JVM是Java开发环境中非常核心的一个组成部分,它不仅为Java程序提供了运行时环境,还负责...
### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...
《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的权威著作,旨在帮助读者全面了解和掌握JVM的工作原理与优化技术。这本书的内容涵盖了JVM的基础概念、内存管理、类加载机制、执行引擎、垃圾收集、性能调优...
资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...
然而,想要在高并发和高性能场景中充分发挥Java的优势,开发者需要对支撑Java程序运行的虚拟机——Java虚拟机(JVM)有深入的理解。《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 ...
Java是世界上最流行的编程...对于Java程序员来说,扎实的基础知识、深入的JVM理解以及对集合框架的熟练运用,都是成为优秀开发者的关键。在准备面试的过程中,不断实践和加深理解,将有助于在职场上取得更大的成功。
分析常见的JVM调优技术及其相关条件,以及在实战中怎么使用到相关的技术进行调优,比较适合中高级开发进行学习,适合对JVM理解较深的开发学习
《深入理解JVM & G1 GC》这篇文章和相关压缩包文件主要聚焦于Java虚拟机(JVM)的内存管理,特别是垃圾收集器(GC)的优化,特别是G1(Garbage-First)垃圾收集器的深度解析。下面将详细阐述JVM、GC的基本概念,...
### JVM如何理解Java泛型类 #### 一、引言 在Java中,泛型是一种强大的功能,它允许程序员编写灵活且类型安全的代码。然而,对于Java虚拟机(JVM)来说,它实际上并不理解泛型的概念。所有的泛型信息在编译阶段就被...