随笔分类 - JVM
摘要:栈、堆、方法区的交互关系 方法区的理解 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域。 方法区在JVM启动的时候被创建,并且它的实际的物理内存中和Java堆区一样都可以是不连续的 方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展 方法区的大小决定了系统可以保存多少
阅读全文
摘要:堆的核心概念 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大的一块内存空间 堆内存的大小是可以调节的 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。
阅读全文
摘要:本地方法 一个Native Method就是一个Java调用非Java代码的接口。一个Native Method是这样一个Java方法;该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其他的编程语言都有这一机制,比如C++中,你可以用extern "C"告知C++编译器去调
阅读全文
摘要:虚拟机栈概述 虚拟机栈出现的背景 由于跨平台性设计,Java的指令都是根据栈来设计的。不同平台的CPU架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 内存中的栈和堆 展示运行时的单位,而堆是存储的单位。即栈解决程序的运行
阅读全文
摘要:JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能运行。 这里并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也
阅读全文
摘要:内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。
阅读全文
摘要:虚拟机结构图 类加载器子系统作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载的类信息存放于一块称为方法区的内存空间。除了类
阅读全文
摘要:JVM整体结构 HotSpot VM是目前市面上高性能虚拟机的代表作之一。 它采用解释器与即使编译器并存的架构 java代码执行流程 JVM架构模型 Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构 基于栈式架构的特点 设计和实现更简单,适用于资
阅读全文