
JVM
文章平均质量分 92
lazyRabbit丶
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记② JVM运行时数据区域
结构方法区(Method Area)方法区是各个线程共享的区域,存放类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分开来。对于习惯在HotSpot虚拟机上开发和部署程序的开发者来说,很多人愿意把方法区称为“永久代”(Permanent Generat...原创 2018-12-14 16:48:57 · 170 阅读 · 0 评论 -
JVM学习笔记④ 内存分配策略与垃圾回收机制
内存分配策略JVM中的年代划分(新生代、老年代、永久代)新生代HotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from(S1)和to(S2))。Eden和Survival的默认分配比例为8:1。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理,后面会说到),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Sur...原创 2018-12-20 16:55:22 · 304 阅读 · 0 评论 -
JVM学习笔记⑤ 对象的内存布局以及String对象
对象的内存布局在 Hotspot 虚拟机中,对象在内存中的布局可以分为3块区域:对象头、实例数据和对齐填充。Hotspot虚拟机的对象头包括两部分信息,第一部分用于存储对象自身的自身运行时数据(哈希码、GC分代年龄、锁状态标志等等),另一部分是类型指针,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。实例数据部分是对象真正存储的有效信息,也是在程序中所定义的各种...原创 2018-12-21 16:17:08 · 265 阅读 · 0 评论 -
JVM学习笔记① 类的生命周期以及类加载机制
类的生命周期这 7 个阶段中的:加载、验证、准备、初始化、卸载的顺序是固定的。但它们并不一定是严格同步串行执行,它们之间可能会有交叉,但总是以“开始”的顺序总是按部就班的。至于解析则有可能在初始化之后才开始,这是为了支持Java语言的运行时绑定(也称为动态绑定或晚期绑定)。类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建...原创 2018-12-12 11:21:08 · 282 阅读 · 0 评论 -
JVM学习笔记③ Java内存模型(JMM)
Java 内存模型在 java 中,所有实例域、静态域和数组元素存储在堆内存中,堆内存在线程之间共享(本文使用“共享变量”这个术语代指实例域,静态域和数组元素)。局部变量(Local variables),方法定义参数(java 语言规范称之为 formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不...原创 2018-12-18 15:33:45 · 257 阅读 · 0 评论