![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 80
Wil.d
这个作者很懒,什么都没留下…
展开
-
JVM之堆
一个JVM实例只存在一个堆内存,堆也是内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《JVM虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)。在《Java虚拟机规范》中对Java堆的描述:所有的对象实例以及数组都应当在运行时分配在堆上。原创 2024-03-26 21:50:44 · 1014 阅读 · 0 评论 -
JVM虚拟机栈
栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,放在那儿。原创 2024-03-23 16:35:06 · 1055 阅读 · 0 评论 -
程序计数器
为了能够准确地记录各个线程正在执行的当前字节码指令地址,为某一个线程都分配一个PC寄存器,这样一来各个线程之间便可以独立进行计算,从而不会出现向好干扰的情况。所谓的多线程在一个特定的时间段内只会执行其中某一个线程的方法,CPU会不停地做任务切换,这样必然导致经常中断或恢复,如何保证毫无差距么?它是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。原创 2024-03-19 07:24:57 · 404 阅读 · 0 评论 -
类加载子系统
虚拟机的类加载虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。原创 2024-03-12 19:58:31 · 874 阅读 · 0 评论 -
JVM的整体架构
基本上是基于栈的指令集架构总结:由于跨平台的设计,Java的 指令都是根据栈来设计的。不同平台下CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。原创 2024-03-12 11:25:58 · 368 阅读 · 0 评论