jvm标准结构
class的执行在Sun JDK中有解释执行和编译为机器码执行两种方式,其中编译为机器码分为client和server两种模式。Sun JDK为了提升class的执行效率,对于解释执行和编译为机器码执行都设置了很多的优化策略。
类加载机制
JVM将类加载过程划分为三个步骤:装载、链接和初始化,装载和链接过程完成后,即将二进制的字节码转换为class对象;初始化过程不是加载类是必须触发的,但最迟必须在初次主动使用对象前执行。
类加载:Bootstrap ClassLoader、Extension ClassLoader、System ClassLoader以及User-Defined ClassLoader
JavaHome/jre/lib/rt.jar JavaHome/jre/lib/ext/*.jar ClassPath
1、ClassNotFoundException
执行Class.forName("com.bluedavy.A"),而当前类的classloder下根本就没有该类所在的jar或者没有该Class文件,就会抛该异常。
2、NoClassDefFoundError
该异常较之ClassNotFoundException更难处理一些,造成此异常的主要原因是加载的类中引用到的另外的类不存在,例如要加载A,而A中调用了B,B不存在或当前CalssLoader没法加载B,就会抛出这个异常。
eg:public class A {
private B b= new B();
}
因此,对于这个异常,须先查看是加载那个类时报报出的,然后再确认该类中引用的类是否存在于当前ClassLoader能加载到的位置。
3、LinkageError
该异常在自定义ClassLoader的情况下出更容易出现,主要原因是此类已经在ClassLoader记载过了,重复地加载会造成该异常,因此要注意避免在并发的清空下出现这样的问题。
JVM中没办法直接更新一个已经load的class,只能创建一个新的ClassLoader类加载更新的Class,然后将新的请求转入该ClassLoader中获取类,这也是JVM中不好实现动态更新的原因之一,而其他更多的原因是对象状态的复制、依赖设置等等。
4、ClassCastException
Sun JDK基于栈的体系结构
线程在创建后,都会产生程序计数器(PC)(或者称PC registers)和栈(Stack);PC存放了下一条要执行的指令在方法内的偏移量;栈中存放了栈帧(StackFrame),每个方法每次调用都会产生栈帧。栈帧主要分为局部变量区和操作数栈两个部分,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果,栈帧中还会有一些杂用空间,例如指向方法已解析的常量池的引用、其他一些VM内部实现需要的数据等。结构如下:
分享到:
相关推荐
了解JVM内存管理和G1 GC的工作原理,对于优化Java应用程序性能、避免内存溢出等问题至关重要。开发者可以通过调整JVM参数,如设置年轻代与老年代的比例、分配的Region数量、暂停时间目标等,来优化G1 GC的行为,从而...
每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...
### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...
标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...
通过对“圣思园张龙 深入理解jvm”的内容进行梳理,我们了解到Java虚拟机作为Java技术体系的重要组成部分,在软件开发中扮演着极其重要的角色。掌握其内部工作原理和优化技巧对于提升Java应用程序的性能至关重要。...
资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...
深入理解JVM,首先要明白Java技术的组成部分,包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是...
《深入理解JVM & G1 GC》这篇文章和相关压缩包文件主要聚焦于Java虚拟机(JVM)的内存管理,特别是垃圾收集器(GC)的优化,特别是G1(Garbage-First)垃圾收集器的深度解析。下面将详细阐述JVM、GC的基本概念,...
Java虚拟机(JVM)是Java程序的核心组件,它负责解析和执行Java字节码,使得Java具有“一次编译,到处运行”的特性。...深入理解JVM,可以帮助开发者更好地应对各种运行时问题,提升应用程序的稳定性和效率。
全面理解JVM虚拟机.pdf
2019最新深入理解JVM内存结构及运行原理(JVM调优)高级核心课程视频教程下载。JVM是Java知识体系中的重要部分,对JVM底层的了解是每一位Java程序员深入Java技术领域的重要因素。本课程试图通过简单易懂的方式,系统...
深入理解JVM垃圾收集算法与垃圾收集器
《深入理解JVM性能调优和内存模型,垃圾回收,虚拟机原理,经典视频教程》是一套详尽的教育资源,旨在帮助Java开发者深入探索Java虚拟机(JVM)的内部工作机制,提升性能优化的能力。本教程共包含110讲,内容丰富,适合...
深入理解JVM虚拟机机制是Java开发者必备的技能之一。Java技术的核心组成部分包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。Java的平台无关性得益于JVM,它在不同操作系统和...
《深入理解Java虚拟机》是Java开发者提升技术深度的重要参考资料,尤其对于想要深入了解JVM机制的程序员来说,这本书无疑是一本宝贵的宝典。周志明的这部作品详细地阐述了JVM的工作原理,涵盖了许多关键知识点,让...
《深入了解JVM(Inside Java Virture Machine)》 Java虚拟机(JVM)是Java语言的核心组成部分,它为Java程序提供了跨平台的运行环境。深入理解JVM对于优化代码性能、排查问题以及提升开发能力至关重要。这篇博文和...
《深入理解JVM》是一本专注于Java虚拟机(Java Virtual Machine)技术的深度解析书籍,其主要内容涵盖了JVM的工作原理、内存管理、性能优化、类加载机制、垃圾收集以及异常处理等多个关键领域。通过深入学习这本书,...