JVM
文章平均质量分 91
zjmeow
这个作者很懒,什么都没留下…
展开
-
读薄《深入理解 Java 虚拟机》 Java 内存区域
Java运行时数据区域白色为线程独占的,灰色为线程共享的。Java在运行的时候会把他所管理的内存划分为若干区域,经常有人把内存区域分为堆内存和栈内存,这种内存分发比较粗糙,下面我们来仔细介绍一下 Java 中的内存区域。程序计数器程序记录器是用于记录程序所运行到的位置的,程序工作的时候就是通过改变这个计数器的值来选择下一条需要执行的指令(类似计算机组成原理中的 PC 计数器)。如果线程...原创 2018-11-16 21:23:04 · 69 阅读 · 0 评论 -
读薄《深入理解 Java 虚拟机》 JVM 的内存分配策略
内存分配规则不是固定的,取决于当前使用的是哪一种垃圾收集器以及虚拟机配置。对象优先在 Eden 上分配大多数情况下,对象分配在 Eden 上,当内存不足的时候触发一次 Minor GC。大对象分配进老年代需要连续内存空间的对象,最典型的是很长的字符串已经数组,写程序的时候应该避免生命周期短的大对象。经常出现大对象内存不足以存放而提前出发 GC 的情况。虚拟机提供了一个参数 -XX:Pre...原创 2018-11-16 21:24:35 · 85 阅读 · 0 评论 -
读薄《深入理解 Java 虚拟机》 垃圾收集
程序计数器,虚拟机栈,本地方法栈在线程结束的时候就自动被回收了,所以不用考虑这几个区域的内存回收。内存回收的主要区域是 Java 堆和方法区。对象可回收的判断##引用计数法给对象添加一个计数器,当有一个引用指向它的时候,计数器加一。当引用失效的时候计数器减一。这个方法实现简单,效率高,例如 python 中也是用到了这个方法。然而主流 Java 虚拟机中并没有采用这种方法,因为它解决不...原创 2018-11-16 21:25:49 · 85 阅读 · 0 评论 -
读薄《深入理解 Java 虚拟机》 类文件结构
Class 文件是一组以 8 字节为基础单位的二进制流,各项数据以严格的顺序排列,中间没有任何分隔符,使得整个 class 文件中存储的内容几乎是程序运行的全部必要数据。Class 文件格式采用一种类似于 C 语言结构体的微结构来存储数据,这种伪结构中只有两种数据结构无符号数和表。无符号数:基本的数据类型,以 u1,u2,u4,u8 来表示 1 个字节,2 个字节,4个字节,8个字节的无符号...原创 2018-11-16 21:26:59 · 107 阅读 · 0 评论 -
读薄《深入理解 Java 虚拟机》虚拟机类加载机制
#虚拟机类加载机制类被加载的生命周期包括加载→验证→准备→解析→初始化→使用→卸载解析阶段在某些情况下可以在初始化阶段之后开始,这是为了支持 Java 语言的运行时绑定。虚拟机规范严格规定了有且只有 5 种情况必须立即对类进行初始化。遇到 new,getstatic,putstatic 或 invokestatic 这 4 条字节码指令时,如果类没有进行过初始化,则需要先出发初始化。...原创 2018-11-16 21:27:58 · 97 阅读 · 0 评论