JVM
java虚拟机
青草离..秋风起
这个作者很懒,什么都没留下…
展开
-
深入理解JMM(Java 内存模型)
深入理解JMMMESI缓存一致性协议为什么要有MESI?MESIJMMJava内存模型与硬件内存架构的关系JMM存在的必要性JMM数据原子操作volatile原理与内存语义同步规则MESI缓存一致性协议为什么要有MESI?现在的处理器都是多核处理器,并且每个核都带有多个缓存(指令缓存和数据缓存,见下图)。为什么需要缓存呢,这是因为CPU访问内存的速度比较慢,所以在CPU和内存之间加了个缓存以提高访问速度。既然每个核都有缓存,那么假设两个核或者多个核同时访问同一个变量时这些缓存是如何进行同步的呢(缓存细原创 2020-09-03 06:20:06 · 995 阅读 · 0 评论 -
常见GC算法介绍
GC四大算法概述引用计数法复制算法(Copying)标记清除(Mark-Sweep)标记压缩算法(Mark-Compact)总结概述JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。因此GC按照回收的区域又分了两种类型,一种是普通GC(minor GC),一种是全局GC(major GC or Full GC)。Minor GC和Full GC的区别普通GC(minor GC):只针对新生代区域的GC,指发生在新生代的垃圾收集动作,因为大多数Java对象存活原创 2020-09-01 17:34:05 · 1600 阅读 · 0 评论 -
JVM:堆(Heap)
堆(Heap)堆堆的GC过程JVM堆的参数调优堆一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。类加载器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息,以方便执行器执行,堆内存在逻辑上分为三部分:Young Generation Space 新生区Tenure generation space 养老区Permanent Space 永久区新生区 又 由伊甸区、幸存0区和幸存1区 组成。实际而言,方法区(Method原创 2020-08-31 16:33:25 · 434 阅读 · 0 评论 -
JVM:Java虚拟机栈
Java虚拟机栈JVM栈栈帧(Stack Frame)局部变量表操作数栈动态链接方法返回地址JVM栈Java虚拟机栈主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。8种基本类型的变量+对象的引用变量+实例方法都是在函数的栈内存中分配。JVM栈以栈帧为单位进行存储,每个方法在执行的时候都会在栈中创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法返回地址等原创 2020-08-31 00:33:22 · 298 阅读 · 0 评论 -
JVM:Method Area (方法区)
Method Area方法区类信息永久代元空间元空间内存管理移除永久代的影响运行时常量池方法区方法区是供各线程共享的运行时内存区域。它存储了每一个类的结构信息,例如运行时常量池(Runtime Constant Pool)、字段和方法数据、构造函数和普通方法的字节码内容。方法区是一种JVM规范的抽象概念。可以把方法区理解为Java中定义的一个接口,元空间/永久代是Hotspot针对该规范进行的实现。在Java官方的HotSpot 虚拟机中,在Java7以及之前的版本,是用永久代实现的方法区;Java8原创 2020-08-30 17:21:58 · 307 阅读 · 0 评论 -
JVM:程序计数器(Program Counter Register)
程序计数器什么是PC寄存器执行流程作用特点什么是PC寄存器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。原创 2020-08-30 02:28:42 · 236 阅读 · 0 评论 -
JVM:Native Method Stack(本地方法栈)
Native Method StackNative Method Stack定义作用JVM怎样使Native Method 是如何跑起来的特性Native Method Stack定义Native Method Stack本地方法栈 与 java 虚拟机栈 很相似;java 虚拟机栈是为虚拟机执行java方法(字节码文件)服务的,而Native Method Stack的服务对象是 Native方法。Native方法有 Native Method Stack调用和管理。本地接口Native Inte原创 2020-08-30 01:12:53 · 181 阅读 · 0 评论 -
JVM:解析 类装载器ClassLoader
类装载器ClassLoaderJVM的位置ClassLoader双亲委派机制沙箱安全机制JVM的位置JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。JVM是运行在操作系统之上的,它与硬件没有直接的交互。作用:JVM是java字节码执行的引擎,还能优化java字节码,使之转化成效率更高的机器指令。JVM中类的装载是由类加载器和它的子类来实现的,类加载是java运行时一个重要的系统组件,负责在运行时查找和装入类文件的类。不同的平台对应着不同的JVM,在原创 2020-08-29 15:35:13 · 145 阅读 · 0 评论