image.png
类加载器:
image.png image.png image.png image.png image.png image.png image.png image.png类加载器的分类:
image.png image.png- 系统的核心类库都是使用引导类加载器加载的(用c语言编写,其他的加载器用java实现)
- 对于用户自定义类来说:默认使用系统类加载器进行加载
运行时数据区:
image.png- 运行时数据区的堆和方法区是一个进程内的线程共用的(当有多个线程想创建同一个对象时,只用创建一个就行了,各个线程共用一个对象),但是每个线程的程序计数器、本地方法栈和虚拟机栈是每个线程独有的
- 方法区存放类的信息
- 垃圾回收一般针对的是堆区
- 线程可以分为守护线程和普通线程
程序计数器:
- 程序计数器作用:PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。
- 在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。
- 任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的Java方法的JVM指令地址;或者,如果是在执行native方法,则是未指定值(undefned) 。
虚拟机栈:
- 一个线程对应一个java虚拟机栈,它的生命周期与该线程相同
- 栈中的每一个栈帧对应一个方法
- 作用:主管Java程序的运行,它保存方法的局部变量(基本数据类型、引用对象类型)、部分结果,并参与方法的调用和返回。
-
递归调用的代码执行要结合线程来理解
-
在程序执行遇到异常时,当没有处理时(try..catch..),程序会在异常处直接退出,下面的代码不会执行
-
方法的结束方式有两种:一、正常结束,以return为代表;二、异常结束,方法执行过程中遇到异常,且未对该异常进行处理
image.png
image.png
image.png
-
不管是栈或是队列还是其他数据结构,其底层都是用数组或是链表加以约束实现的
image.png
image.png
image.png
网友评论