JVM
文章平均质量分 91
种花途。
当很多人对某一件事不怎么看好时 , 这可能是你的机会
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM学习笔记十一:StringTable
- String:字符串,使用一对""引起来表示- String声明为final的,不可被继承- String实现了Serializable接口:表示字符串是支持序列化的。- String实现了Comparable接口:表示string可以比较大小- String在jdk8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]原创 2023-04-01 16:07:31 · 493 阅读 · 0 评论 -
JVM学习笔记十:执行引擎
执行引擎属于JVM的下层,里面包括解释器、及时编译器、垃圾回收器执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部。原创 2023-03-10 20:20:54 · 868 阅读 · 0 评论 -
JVM学习笔记九:对象实例化与直接内存
不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存。通常,访问直接内存的速度会优于Java堆,即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区。原创 2023-03-09 19:47:42 · 328 阅读 · 0 评论 -
JVM学习笔记八:方法区
《Java虚拟机规范》中明确说明:尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。原创 2023-02-07 17:47:20 · 210 阅读 · 0 评论 -
JVM学习笔记七:堆
堆对于一个 JVM 进程来说是唯一的,也就是一个进程只有一个 JVM,但是进程包含多个线程,他们是共享同一堆空间的。一个 JVM 实例只存在一个堆内存,堆也是 Java 内存管理的核心区域。Java 堆区在 JVM 启动的时候即被创建,其空间大小也就确定了。是 JVM 管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分。原创 2023-01-24 20:36:49 · 211 阅读 · 0 评论 -
JVM学习笔记六:本地方法接口和本地方法栈
简单地讲,一个 Native Method 是一个 Java 调用非 Java 代码的接囗。该方法的实现由非Java语言实现,比如 C。这个特征并非 Java 所特有,很多其它的编程语言都有这一机制,比如在C中,你可以用 extern “c” 告知c编译器去调用一个c的函数。在定义一个 native method 时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非 Java 语言在外面实现的。本地接口的作用是融合不同的编程语言为Java所用,它的初衷是。原创 2023-01-18 23:54:30 · 211 阅读 · 0 评论 -
JVM学习笔记五:虚拟机栈(VMS)
由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。原创 2023-01-18 16:47:50 · 1504 阅读 · 0 评论 -
JVM学习笔记四:程序计数器(PC寄存器)
JVM 中的程序计数寄存器中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。在JVM规范中,每个线程都有它自己的程序计数器,是线程私有的,生命周期与线程的生命周期保持一致。原创 2023-01-07 23:33:32 · 259 阅读 · 0 评论 -
JVM学习笔记三:运行时数据区概述及线程
阿里Java规范对JVM内存模型的划分其中元数据和CodeCache,都可以统称为非堆空间。方法区也可以称为元空间。Runtime。对于各个区域是共享的还是线程私有的,如下图:pc:程序计数器VMS:虚拟机栈NMS:本地方法栈。原创 2023-01-07 22:47:50 · 185 阅读 · 0 评论 -
JVM学习笔记二:类加载子系统
关于JVM的内存结构如下图:对上图的介绍如下:程序计数器程序计数器(PC)是一块较小的内存空间,在当前线程执行字节码文件时,程序计数器就可以看作是一个行号指示器。通过改变计数器的值来选取下一个需要执行的字节码指令。由于Java是支持多线程操作,为了保证多个线程在轮流执行时还能够保持执行顺序的正确性,程序计数器是线程独享的数据区。如果当前正在执行一个 Java 方法,那么程序计数器记录的是正在执行的虚拟机字节码指令的地址。原创 2023-01-04 22:03:20 · 304 阅读 · 0 评论
分享