6、JVM是如何处理异常的

你好,我是郑雨迪。今天我们来讲讲Java虚拟机的异常处理。 众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可分为显式和隐式两种。显式抛异常的主体是应用程序,它指的是在程序中使用“throw”...

深入拆解Java虚拟机

7、JVM是如何实现反射的

今天我们来聊聊Java里的反射机制。 反射是Java语言中一个相当重要的特性,它允许正在运行的Java程序观测,甚至是修改程序的动态行为。 举例来说,我们可以通过Class对象枚举该类中的所有方法,我们还可以通过Method.setAccessibl...

深入拆解Java虚拟机

8、JVM是怎么实现invokedynamic的(上)

前不久,“虚拟机”赛马俱乐部来了个年轻人,标榜自己是动态语言,是先进分子。 这一天,先进分子牵着一头鹿进来,说要参加赛马。咱部里的老学究Java就不同意了呀,鹿又不是马,哪能参加赛马。 当然了,这种墨守成规的调用方式,自然是先进分子所不齿的。现在年轻...

深入拆解Java虚拟机

9、JVM是怎么实现invokedynamic的(下)

上回讲到,为了让所有的动物都能参加赛马,Java 7引入了invokedynamic机制,允许调用任意类的“赛跑”方法。不过,我们并没有讲解invokedynamic,而是深入地探讨了它所依赖的方法句柄。 今天,我便来正式地介绍invokedynam...

深入拆解Java虚拟机

10、Java对象的内存布局

在Java程序中,我们拥有多种新建对象的方式。除了最为常见的new语句之外,我们还可以通过反射机制、Object.clone方法、反序列化以及Unsafe.allocateInstance方法来新建对象。 其中,Object.clone方法和反序列化...

深入拆解Java虚拟机

11、垃圾回收(上)

你应该听说过这么一句话:免费的其实是最贵的。 Java虚拟机的自动内存管理,将原本需要由开发人员手动回收的内存,交给垃圾回收器来自动回收。不过既然是自动机制,肯定没法做到像手动回收那般精准高效[1] ,而且还会带来不少与垃圾回收实现相关的问题。 接下...

深入拆解Java虚拟机
12347