最新 最热

JVM-方法区

ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及独立会话管理

2023-03-21
1

图解对象分配过程

为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收后是否会在内存空间中产生内存碎...

2023-03-21
1

JVM-堆

1.堆的核心概述1.1 认识堆内存堆与进程、线程一个进程对应一个JVM实例一个JVM实例对应一个堆空间进程包含多个线程,所以线程之间共享同一个堆空间对堆的认识一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域...

2023-03-21
1

JVM-栈帧中的方法返回地址(return address)

存放 调用该方法的pc寄存器的值。 一个方法的结束,有两种方式: 正常执行完成出现未处理的异常,非正常退出 无论通过哪种方式退出,在方法退出后都返回到该方法被调用的位置。方法正常退出时,调用者的pc计数器的值作为返回...

2023-03-21
1

JVM-虚拟机栈(操作数栈(Operand Stack))

1 操作数栈的特点每一个独立的栈帧除了包含局部变量表以外,还包含一个后进先出(Last - In - First -Out的 操作数栈,也可以称之为表达式栈(Expression Stack)操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据或提取...

2023-03-21
1

JVM-程序计数器

PC寄存器用来存储指向下一条指令的地址,也就是即将要执行的指令代码。由执行引擎读取下一条指令,并执行该指令。

2023-03-20
1

JVM-运行时数据区概述及线程

Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。 ...

2023-03-20
1

JVM双亲委派机制

原因:由于双亲委派机制,我们的String类是由引导类加载器加载的,而引导类加载器并没有main方法,所以会报错

2023-03-20
1

JVM类加载器的分类

JVM支持两种类型的类加载器 。分别为引 导类加载器(Bootstrap ClassLoader) 和自定义类加载器(User-Defined ClassLoader)从概念上来讲,自定义类加载器一般指的是程序中由开发人员自定义的一类类加载器,但是Java虚拟机规范...

2023-03-20
1

JVM的生命周期

虚拟机的启动 Java虚拟机的启动是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class)来完成的,这个类是由虚拟机的具体实现指定的。 虚拟机的执行 一个运行中的Java虚拟机有着一个清晰的任务:执行Java...

2023-03-20
1