JVM
文章平均质量分 71
JVM
致敬未来的我
掌握着自己的人生。。
展开
-
JVM学习-运行时数据区-虚拟机栈
概述:内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请,分配,管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局每个线程:独立包括程序计数器,本地方法栈,虚拟机栈(每个线程独立的一份)线程间共享:方法区,堆区。1.程序计数器JVM中的程序计数寄存器中,Register的命名源于CPU的寄存器,寄存器存储指令原创 2021-03-13 13:21:29 · 150 阅读 · 0 评论 -
JVM学习-类加载子系统
一.类加载子系统class文件–》类加载子系统–》运行时数据区–》本地方法接口–》本地方法库类加载子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识ClassLoader只负责class文件的加载,至于它是否可以运行,则由ExecutionEngine决定加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)二 ClassLo原创 2021-03-04 21:02:02 · 92 阅读 · 2 评论 -
JVM学习-堆空间
一.堆的核心概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间.(堆内存的大小是可以调节的)《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有线程共享Java堆,在这里可以还可以划分线程私有的缓冲区《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组都应当运行时分配在堆上。数组和对象可能永远不会在存储在栈上,因为栈帧中保原创 2021-03-05 10:06:01 · 96 阅读 · 3 评论 -
JVM学习-方法区
一.方法区的基本理解方法区与Java堆一样,是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误。关闭JVM就会释放这个区域的内存二.方法区的内部结构1.方法区存储什么?存储已被虚拟机加载的类型信息,常量,静态变量,即时编译器编译后的代码缓存等。类型信原创 2021-03-08 18:10:27 · 71 阅读 · 0 评论 -
JVM学习-执行引擎
一.概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这俩种机器都有代码执行能力, 其区别是物理机的执行引擎是直接建立在处理器,缓存,指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。如果想要一个Java程序运行起来,执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的原创 2021-03-08 18:16:30 · 74 阅读 · 0 评论