![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
ONE*
这个作者很懒,什么都没留下…
展开
-
class常量池、字符串常量池和运行时常量池的区别
class常量池、字符串常量池和运行时常量池的区别原创 2022-02-23 13:09:14 · 55 阅读 · 0 评论 -
类加载过程
类加载过程原创 2022-02-15 18:57:21 · 69 阅读 · 0 评论 -
对象的访问定位
主流的访问方式主要有使用句柄和直接指针两种: ·如果使用句柄访问的话,Java堆中将可能会划分出一块内存来作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自具体的地址信息,其结构如图2-2所 示。· 如果使用直接指针访问的话,Java堆中对象的内存布局就必须考虑如何放置访问类型数据的相关 信息,reference中存储的直接就是对象地址,如果只是访问对象本身的话,就不需要多一次间接访问 的开销,如图2-3所示。 这两种对象访问方式各有优势,使用句柄来访问的原创 2021-09-26 16:06:58 · 144 阅读 · 0 评论 -
对象的创建及对象内存布局
类加载检查 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过程 分配内存 虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成 后便可完全确定,为对象分配空间的任务实际上便等同于把一块确定 大小的内存块从Java堆中划分出来。 两种分配方式: 假设Java堆中内存是绝对规整的,所有被使用过的内存都被放在一 边,空闲的内存被放在另一边,中间放着.原创 2021-09-26 16:01:26 · 104 阅读 · 0 评论 -
NIO、、
NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区 (Buffer)的I/O方式,它可以使用Native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的 DirectByteBuffer对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了 在Java堆和Native堆中来回复制数据。 ...原创 2021-09-26 15:24:03 · 55 阅读 · 0 评论 -
java内存区域
程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。 在Java虚拟机的概念模型里[1],字节码解释器工作时就是通过改变这个计数器 的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处 理、线程恢复等基础功能都需要依赖这个计数器来完成。 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线程 之间计数器互不影响,独立存储,我们称这类内存区域为“线...原创 2021-09-26 15:20:25 · 55 阅读 · 0 评论