java jvm
无始无终123
。。。
展开
-
JDK 1.8 下的 java.lang.Class 对象和 static 成员变量在堆还是方法区?
背景 从 JDK 1.7 开始,Oracle 团队就开始对 HotSpot VM 的永久代(PermGen)大刀阔斧的修改、移除,导致 HotSpot 的内存区域发生了很多改变,最终在 JDK 1.8 元空间(Metaspace)取代了永久代成为 HotSpot VM 对方法区的实现。 我们入门虚拟机的学习大多是通过《Java 虚拟机规范》、《深入理解Java虚拟机》这两本经典。但是由于 Ja...转载 2019-10-16 17:37:07 · 2929 阅读 · 0 评论 -
基于JDK1.8 分析运行时常量池、字符串常量池、各种常量池
Java中的常量池分为三种类型: 类文件中常量池(The Constant Pool) 运行时常量池(The Run-Time Constant Pool) String常量池 类文件中常量池 ---- 存在于Class文件中 所处区域:堆 诞生时间:编译时 内容概要:符号引用和字面量 class常量池是在编译的时候每个class都有的,在编译阶段,存放的是...转载 2019-10-16 11:41:14 · 640 阅读 · 0 评论 -
Java虚拟机-----方法区和运行时常量池
方法区: 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的 代码等数据(是唯一的数据)。当java虚拟机通过类加载器加载这个类的时候,这个类的信息就会保存到方法区中,虽然Java虚拟机规范把方法区描述为堆的 一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分转载 2017-04-12 11:01:35 · 703 阅读 · 1 评论 -
Java虚拟机-----运行时栈结构
Java 虚拟机栈 该区域也是线程私有的,它的生命周期也与线程相同。虚拟机栈描述的是 Java 方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧,栈它是用于支持续虚拟机进行方法调用和方法执行的数据结构。对于执行引擎来讲,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这个栈帧所关联的方法称为当前方法,执行引擎所运行的所有字节码指令都只针对当前栈帧进行操作。栈帧用于存转载 2017-04-12 11:03:53 · 246 阅读 · 0 评论 -
JVM内存模型
前一段时间粗略看了一下《深入Java虚拟机 第二版》,可能是因为工作才一年的原因吧,看着十分的吃力。毕竟如果具体到细节的话,Java虚拟机涉及的内容太多了。可能再过一两年去看会合适一些吧。 不过看了一遍《深入Java虚拟机》再来理解Java内存管理会好很多。接下来一起学习下Java内存管理吧。 请注意上图的这个: 我们再来复习下进程与线程吧: 进程是具有一定转载 2017-01-12 11:28:56 · 234 阅读 · 0 评论 -
GC工作机制详解
一、JVM结构 根据《java虚拟机规范》规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个过程,可配合理解。 关于类的加载机制,可以参考http://blog.csdn.net/tonyt转载 2017-05-16 10:26:36 · 1256 阅读 · 0 评论