本文转自https://time.geekbang.org/column/article/12098 这里我们来聊一聊Java虚拟机中虚方法调用的具体实现。 首先,我们来看一个模拟出国边检的小例子 abstract cl…
标签:java虚拟机
读郑雨迪《深入拆解Java虚拟机》 -- 第六讲 JVM是如何处理异常的
本文转自https://time.geekbang.org/column/article/12134 众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可分为显示和…
读郑雨迪《深入拆解Java虚拟机》 -- 第七讲 JVM是如何实现反射的
本文转自https://time.geekbang.org/column/article/12192 反射是Java语言中一个相当重要的特性,它允许正在运行的Java程序观测,甚至是修改程序的动态行为。 举例来说,我们可…
读郑雨迪《深入拆解Java虚拟机》 -- 第八讲 JVM是如何实现invokedynamic的
本文转自https://time.geekbang.org/column/article/12564 以前,我们赛马 只能由马参加,但是对于一些年轻人里流行的鸭子类型(duck typing),只要跑起来像马的…
深入理解Java虚拟机---学习感悟以及笔记
一、为什么要学习Java虚拟机? 这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器。曾经的…
深入理解Java虚拟机-Eclipse Memory Analyzer 安装使用说明
Eclipse Memory Analyzer(简称MAT)是一个功能丰富且操作简单的JVM Heap Dump分析工具,可以用来辅助发现内存泄漏减少内存占用。 使用 Memory Analyzer 来分析生产环境的 J…
深入理解Java虚拟机-OOM分析
OOM即Out Of Memory Error,内存溢出。 如果不断的创建对象,并且这些对象到GC Roots之间有可达路径,那么这些对象就不会被垃圾回收机制清楚,当对象数量达到容量限制是就会产生内存溢出。 在虚拟机中,…
深入理解Java虚拟机-Java内存区域、对象创建及访问
1,运行时数据区域包括:方法区,虚拟机栈,本地方法栈,堆,程序计数器,如下图1 图1,Java虚拟机运行时数据区 1.1,程序计数器(Program Counter Register),是一块…
深入理解JAVA虚拟机读书笔记(4)
之前提到的了根搜索算法,它可以解决我们应该回收哪些对象的问题,但是它显然还不能承担垃圾搜集的重任,因为我们在程序(程序也就是指我们运行在JVM上的JAVA程序)运行期间如果…
深入理解Java虚拟机(一)-jvm运行时数据区
前言 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写对应的delete/free代码,不容易出现内存泄漏和内存溢出问题,由虚拟机管理内存。不过,也正是Java程序员把内存控制的权…
深入理解Java虚拟机(三)-垃圾收集
概述 说到垃圾收集(Garbage Collection,GC),大部分人都会把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集…
深入理解Java虚拟机(四)-垃圾收集算法
概述 当前的商业虚拟机的垃圾收集都采用“分代收集”(Generational Collection)算法,这种算法并没有什么新的思想,只是根据对象存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样…