![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
GhostRiderQin
这个作者很懒,什么都没留下…
展开
-
JVM---执行引擎
执行引擎执行引擎是Java虚拟机核心的组成部分之一“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虛拟机的执行引擎则是由软件自行实现的,因.此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM所识别的字原创 2020-07-04 19:07:17 · 294 阅读 · 0 评论 -
JVM---方法区
方法区栈、堆、方法区的交互关系方法区基本理解方法区(Method Area)与Java堆一 样, 是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区–样都可以是不连续的。方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误: java. lang . OutOfMemoryError:PermGen space 或者原创 2020-07-04 19:04:16 · 227 阅读 · 0 评论 -
JVM---堆(垃圾回收机制)
图解对象分配过程为新对象分配内存是一件非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收后是否会在内存空间中停生内存碎片。1.new的对象先放伊甸园区。此区有大小限制。2.当伊甸园的空间填满时,程序又需要创建对象,JVM的垃圾 回收器将对伊甸园区进行垃圾回收(Minor GC), 将伊甸园区中的不再被其他对象所引用的对象进行销毁。再加载新的对象放到伊甸园区3.然后将伊甸园中的剩余对象移动到幸存原创 2020-06-22 15:45:16 · 900 阅读 · 0 评论 -
JVM---堆(概述)
堆概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节的。《Java虚拟机规范》规定,堆可以处于物理.上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区( ThreadLocal Allocation Buffer, TLAB) 。《Java虛拟机规范》中对Java堆的描述是:所原创 2020-06-22 15:42:51 · 290 阅读 · 0 评论 -
JVM---本地方法接口与本地方法栈
本地方法接口什么是本地方法?简单地讲,一个Native Method就 是一个Java调用非Java代码的接口。 一个Native Method是这样-一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告 知C+ +编译器去调用-一个C的函数。"A native method is a Java method whose implementation is provided by non-j原创 2020-06-18 10:40:48 · 257 阅读 · 0 评论 -
JVM---虚拟机栈
虚拟机栈虚拟机栈出现的背景由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的栈与堆栈是运行时的单位,而堆是存储的单位。即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放、放在哪儿。Java虚拟机栈是什么?Java虚拟机栈(Java Virtual Machine Stack) ,早期也叫Java原创 2020-06-18 10:39:48 · 171 阅读 · 0 评论 -
JVM---程序计数器(PC寄存器)
程序计数器简介JVM中的程序计数寄存器(Program Counter Register) 中,Register 的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有 把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。作用PC寄存器用来存储指向下一条指令的地址,也即将要执行的指令代码。由执行引擎读取下一条指令。原创 2020-06-18 10:37:31 · 416 阅读 · 0 评论 -
JVM---运行时数据区(线程)
2、运行时数据区前言内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了Java|在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。不同的JVM对于内存的划分方式和管理机制存在着部分差异。结合JVM虚拟机规范,来探讨一下经典的JVM内存布局。方法区与堆是线程共享的,程序计数器、本地方法栈、虚拟机栈是线程私有的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUpgO9n6-1592447原创 2020-06-18 10:35:52 · 143 阅读 · 0 评论 -
JVM---内存管理(类加载子系统)
JVM内存管理:1、类加载器子系统作用类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只 负责class文件的加载, 至于它是否可以运行,则由ExecutionEngine决定。加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)加载过程class file 存在于本地硬盘上原创 2020-06-18 10:30:12 · 163 阅读 · 0 评论 -
JVM---生命周期与发展历程
JVMJVM生命周期:虚拟机的启动:是通过引导类加载器(bootstrap class loader)创建一个初始类(initial class) 来完成的,这个类是由虚拟机的具体实现指定的。虚拟机的执行:一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。执行一个所谓的Java程序的时候,真真正正在执行的是一个叫做Java虛拟机的进程。JVM发展历程Sun Classic VM早在1996年Javal.0版本的时候,Sun公原创 2020-06-18 10:25:37 · 266 阅读 · 0 评论