Java虚拟机
Java虚拟机
Reverse train.
这个作者很懒,什么都没留下…
展开
-
Java虚拟机:类加载过程
1.加载原创 2020-03-14 19:38:06 · 207 阅读 · 0 评论 -
Java虚拟机:类加载机制(2)
下面用三个例子来说明何为被动引用。1.public class SuperClass { static{ System.out.println("SuperClass init!"); } public static int value=123;}public class SubClass extends SuperClass { ...原创 2020-03-13 15:40:11 · 104 阅读 · 0 评论 -
Java虚拟机:类加载机制(1)
在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。Java里天生可以动态扩展的语言特性就是依赖运行期间动态加载和动态连接这个特点实现的。...原创 2020-03-12 16:43:35 · 154 阅读 · 0 评论 -
Java虚拟机:垃圾收集与内存分配(3)
Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存。回收内存这一点前面已经介绍过了,现在探讨一下给对象分配内存。对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,少数情况下也可能会直接分配在老年代上。但分配规则并不是百分百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数...原创 2020-03-11 13:39:03 · 94 阅读 · 0 评论 -
Java虚拟机:垃圾收集与内存分配(2)
垃圾收集算法1.标记 - 清除算法此算法是最基础的收集算法,分为标记和清除两个阶段:首先标记所有需要回收的对象,在标记完成后统一回收所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要不足有两个,一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能导...原创 2020-03-11 11:00:15 · 150 阅读 · 0 评论 -
Java虚拟机:垃圾收集与内存分配(1)
Java内存运行时区域的各个部分中,程序计数器、虚拟机栈、本地方法栈这三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了。Java堆的方法区就不一样,我们只...原创 2020-03-10 20:54:41 · 95 阅读 · 0 评论 -
Java虚拟机:运行时数据区
Java虚拟机在执行Java程序的时候会把它所管理的内存划分为若干个不同的数据区域。1.程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执...原创 2020-03-09 17:05:59 · 96 阅读 · 0 评论