jvm
gary0917
这个作者很懒,什么都没留下…
展开
-
Java堆中的新生代和老年代以及相应的垃圾收集算法
新生代 主要是用来存放新生的对象,会频繁创建对象,所有垃圾收集会频繁进行回收。在新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。复制算法将内存分为三个区:一块较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活的对象一次...原创 2018-11-02 01:30:31 · 1659 阅读 · 0 评论 -
“重载”和“重写”在Java虚拟机中如何确定正确的目标方法
文章摘自:深入理解Java虚拟机 第二版 周志明著 静态分派 请看如下代码:package com.gary.test.overload_overwrite;/** * 方法静态分派演示 * @author gary * */public class StaticDispatch { static abstract class Human { } s...原创 2018-12-21 16:51:45 · 217 阅读 · 0 评论 -
Java虚拟机类加载时机
文章摘自:深入理解Java虚拟机 第二版 周志明著 代码编译的结果从本地机器码转变为字节码。在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期...原创 2018-12-21 18:51:09 · 170 阅读 · 0 评论 -
Java虚拟机类加载过程
文章摘自:深入理解Java虚拟机 第二版 周志明著 本文主要讲解一个Java虚拟机中类加载的全过程,也就是加载、验证、准备、解析和初始化这5个阶段所执行的具体动作。 加载 首先,加载是类加载Class Loading过程的一个阶段。然后,在加载阶段,虚拟机需要完成以下3件事:1)通过一个类的全限定名来获取定义此类的二进制字节流。2)将这个字节流所代表的静态存储结构转化为方...原创 2018-12-22 18:37:14 · 636 阅读 · 0 评论 -
Java虚拟机类加载器
目录何为类加载器类与类加载器类加载器的双亲委派模型双亲委派模型好处双亲委派模型是如何实现的?文章摘自:深入理解Java虚拟机 第二版 周志明著 本文主要讲解"类加载器"。 何为类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类二进制字节流”这个动作放刀Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的...原创 2018-12-23 00:14:53 · 137 阅读 · 0 评论 -
Java内存模型
文章摘自:Java并发编程的艺术 方腾飞 魏鹏 程小明 著 Java内存模型基础 线程通信与同步:在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型中,线程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信。而同步是显示进行的。即程序猿必须显示指定某个方法或者某段代码需要在线程之间互斥执行。在消息传递的并发模型中,线程直接没有公共状...原创 2019-02-23 23:18:15 · 1584 阅读 · 0 评论