
Java虚拟机
借汝之光,得以光明
不平凡的人生注定不平凡的路。
展开
-
深入理解JVM:虚拟机字节码执行引擎
一、运行时栈结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。 栈帧包括:局部变量表、操作数栈、动态连接、方法的返回地址 和一些额外的附加信息。 执行引擎运行的所有字节码指令只针对当前栈帧进行操作。需要注意的是一个栈中能容纳的栈帧是受限,过深的方法调用可能会导致StackOverFlowError,当然,我们可以认为设置栈的大小。其模型示意图大体如下: 执行引擎的所有字节码...原创 2020-02-01 19:24:46 · 357 阅读 · 0 评论 -
深入理解JVM:类加载器
一、类加载器 把类加载阶段中通过一个类的全限定类名来获取描述此类的二进制字节流这个动作放到jvm外部实现,实现这个动作的代码模块称“类加载器”。 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立在jvm中唯一性。也就是说,如果加载一个类的类加载器不同,那么这两个类在jvm中也是不同的。 三种类加载器 JVM 中内置了三个重要的 ClassLoader,除了 BootstrapC...原创 2020-02-01 10:52:25 · 197 阅读 · 0 评论 -
深入理解JVM:类文件结构
一、 在java诞生的时候就有一个口号:“一次执行,到处运行!”。字节码实现了这部分功能。 注意:JVM不和包括java在内的任何语言绑定,它只与Class文件这种特定的二进制文件格式所关联。 其他语言可以通过编译器生成字节码文件,然后再jvm上面运行。 二、Class文件 任何一个Class文件都对应这唯一一个类或者接口的定义信息,但反过说不正确。 Class文件是一组以8位字节...原创 2020-01-31 12:10:47 · 244 阅读 · 0 评论 -
深入理解JVM:垃圾回收
一、学习垃圾回收的必要性 当需要排查各种内存溢出问题、当垃圾收集成为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 二、JVM内存分配与回收 垃圾回收主要是在虚拟机内存的堆上。堆示意图如下: 上图所示的 eden 区、s0("From") 区、s1("To") 区都属于新生代,tentired 区属于老年代。 两种垃圾回收 新生代 GC(Minor...原创 2020-01-29 10:31:52 · 284 阅读 · 0 评论 -
深入理解JVM:内存区域
一、运行时数据区域 Java虚拟机在运行时java程序的时候,会把它所管理的内存划分成若干个不同的数据区域。其中jdk1.8前后版本有差别。 jdk1.8之前: jdk1.8之后: 内存可分为:程序计数器、栈、堆、方法区和直接内存。 整个内存数据...原创 2020-01-27 19:40:34 · 630 阅读 · 0 评论