![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 79
最好的文酱
无限的心该何处安放。
展开
-
StringTable
String的基本特性 String字符串:使用一对""引起来。 String声明为final的,不可被继承。 String实现了Serializable接口,表示字符串是支持序列化的。实现了Comparable接口:便是String是可以比较大小的。 String在JDK8中及以前内部定义了final char[] value用于存储字符串数据,JDK9时改为byte[]. String在JDK9中存储结构变更 更新日志 结论:String再也不用char[] 来存储,改成用byte[]加上编码标记原创 2021-09-04 10:45:43 · 238 阅读 · 2 评论 -
JVM中的执行引擎
执行引擎概述 执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 "虚拟机"是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的。,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。 JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一原创 2021-09-02 11:12:07 · 118 阅读 · 0 评论 -
JVM是什么
什么是JVM? 1、JVM是Java虚拟机,是用来执行Java字节码(二进制的形式)的虚拟机计算机。 2、JVM是运行在操作系统之上的,与硬件没有任何关系。 Java的跨平台原理 跨平台:由Java编写的程序可以在不同的操作系统上运行:一次编写,多出运行 原理:编译之后的字节码文件和平台无关,需要在不同的操作系统之上安装一个对应版本的虚拟机(JVM) (Java虚拟机不和包括Java在内的任何语言绑定,他只与class文件这种二进制文件格式所关联。无论使用何种语言进行软件开发,只要将源文件编译成正确原创 2021-09-02 11:11:32 · 4797 阅读 · 0 评论 -
JVM中的直接内存
直接内存概述 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆。及读写性能好。 因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。 Java的NIO库允许Java程序使用直接内存,用于数据缓冲区。 直接缓冲区与非直接缓冲区 直接缓冲区 使用NIO时,如下图,操作系统划出的直接缓存区可原创 2021-09-02 11:11:02 · 111 阅读 · 0 评论 -
对象的实例化及内存布局访问定位
对象的实例化 大厂面试题 对象在JVM中是怎么存储的? 对象头信息里面有哪些东西 Java对象头里有什么 前面所述是从字节码角度看待对象的创建过程,现在从执行步骤的角度来分析 对象的内存布局 对象的访问定位 JVM是如何通过栈帧中的对象引用访问到其内部的对象实例的呢? ...原创 2021-09-02 11:10:23 · 60 阅读 · 0 评论 -
JVM运行时数据区之方法区
方法区 栈、堆、方法区的交互关系 运行时数据区的结构图 从线程共享与否的角度看 栈、堆、方法区的交互关系 方法区的理解 官方文档 The Java Virtual Machine has a method area that is shared among all Java Virtual Machine threads. The method area is analogous to the storage area for compiled code of a conventional lang原创 2021-08-24 12:03:39 · 129 阅读 · 0 评论 -
JVM运行时数据区------堆
堆 堆(Heap)的核心概述 一个JVM实例只存在一个堆内存,对也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以处于物理上不连续的空间中,但在逻辑上它应该被视为连续的。 所有的线程共享Java堆,在这里还可以划分为线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)。 《Java虚拟机规范》中对Java堆的描述是:所有原创 2021-08-21 20:22:51 · 188 阅读 · 0 评论 -
JVM运行时数据区
JVM运行时数据区 概述 内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中的内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异(我们以HotSpot虚拟机来展开) 灰色区域为单独线程私有的,红色的为多个线程共享的。即每个线程独立包括程序计数器、栈、本地栈。线程间共享:堆、堆外内存(永久代或元空间、代码缓存)。 Java虚拟机定义了若干个程序运原创 2021-08-06 19:37:48 · 80 阅读 · 0 评论