![](https://img-blog.csdnimg.cn/20200101093857854.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java虚拟机
主要参考《深入理解Java虚拟机》这本书
打不死Gin
打不倒我的将被我打败
展开
-
从虚拟机角度谈谈Java多态与重载、重写
我们先来看三个例题,如果都能答对的话,那么恭喜你,说明已经彻底理解了Java多态与重载、重写的本质。例一: Java多态与重载class Human {}class Man extends Human {}class Woman extends Human {}public class OverloadDemo { public void say(Human human)...原创 2020-03-08 16:48:40 · 172 阅读 · 0 评论 -
Java字节码new之后为什么会有dup
在看《深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)》这本书时,有几处的字节码在new之后会紧接着出现dup指令,我么以书中253页的字节码为例,说明dup指令的作用。其中Java代码为:public class DynamicDispatch { static abstract class Human { protected abstract void sayHello(...原创 2020-03-06 18:12:18 · 1018 阅读 · 2 评论 -
大话Minor GC与Full GC分别在什么时候发生?
Java堆分区要理解Minor GC和Full GC之前要先了解Java堆的分区。如果对Java堆进行细分地话,又可以分为新生代(包含Eden空间、From Survivor空间、ToSurvivor空间)和老年代。注意:这样要补充一点。在HotSpot虚拟机中默认Eden和From Survivor、ToSurvivor的大小比例是8:1:1。所以上图为了展示清楚,画的不是很准确。垃圾收...原创 2020-01-02 09:14:04 · 512 阅读 · 0 评论 -
大话Java堆的分区Eden、From Survivor、To Survivor、老年代
Java虚拟机运行时数据区一般分为:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。如果对Java堆进行细分地话,又可以分为新生代(包含Eden空间、From Survivor空间、ToSurvivor空间)和老年代。由来不喜欢看历史的可以先看后面内容。之所以将Java堆又细分为新生代和老年代的原因不是因为《Java虚拟机规范》对这一块数据区域有进一步地划分。而是Sun/...原创 2020-01-02 08:35:47 · 2619 阅读 · 5 评论