JVM
文章平均质量分 81
JVM
john_lw
这个作者很懒,什么都没留下…
展开
-
JVM--JVM内存布局与Java对象的定义
JVM基本结构 如图所示: 运行时数据区 Java虚拟机定义了若干种程序运行时会用到的运行时数据区。 程序计数器 每个Java线程都拥有自己的程序计数器,字节码执行游标。 虚拟机栈 每个Java线程都拥有自己的虚拟机栈,在线程创建时同时创建,用于存储栈帧。栈帧是用来存储数据和部分过程结果的数据结构,用来处理动态链接,方法返回和异常分派。栈帧随着方法的调用而创建,随着方...原创 2018-03-29 12:46:41 · 290 阅读 · 0 评论 -
JVM--垃圾回收
哪些内存应该被回收? JVM垃圾回收主要针对堆区和方法区。在Java堆中,我们不再需要的对象就可以被回收了。例如:在一个方法中新生成了一个Integer对象作为局部变量,当方法结束后,该对象将不会再被使用,是被回收的对象。 如何确定对象可被回收? 引用计数法 当没有引用指向某个对象时,可以认为该对象可被回收。 在引用计数法中,每个对象都记录了指向它的引用的个数,当引用为0时即可被...原创 2018-03-30 10:48:01 · 295 阅读 · 0 评论 -
JVM--JVM类加载机制(上)
类加载机制 虚拟机把描述类的Class文件(一串二进制字符流,无论何种存在形式)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是JVM的类加载机制。 类的生命周期 类从加载到内存到卸载的整个生命周期如下图: 加载阶段 Java虚拟机规范并没有指定什么时候开始加载阶段,由虚拟机实现自己选择。加载阶段的工作由类加载器来完成,在JV...原创 2018-04-17 16:54:19 · 250 阅读 · 0 评论 -
JVM--JVM类加载机制(下)
在深入理解JVM–JVM类加载机制(上)中,只写到Java类加载机制的加载阶段,在类的生命周期中,还有后面的验证、准备、解析、初始化、使用和卸载这些阶段。 验证 验证阶段的主要工作是为了确保Class文件流中包含的内容符合虚拟机的要求,而且不会威胁到虚拟机自身的安全,主要有以下几个方面: 文件格式验证:验证Class文件格式 元数据验证:Java语言级语义分析 字节码验证:验证方法体不会危...原创 2018-04-18 16:56:53 · 272 阅读 · 0 评论 -
JVM--解析、分派、重载与重写
方法调用最关键的问题就是要确定具体调用哪个版本的方法。在Java虚拟机里共有5条方法调用字节码指令: invokestatic:调用静态方法 invokespecial:调用实例构造方法,私有方法和父类方法 invokevirtual:调用虚方法 invokeinterface:调用接口方法,在运行时确定一个实现此接口的对象 invokedynamic 静态解析 通过invokestat...原创 2018-04-23 15:08:20 · 293 阅读 · 0 评论