
JVM
文章平均质量分 90
格子衫111
梦想不能只是梦和想...
展开
-
搞懂JVM类加载过程,其实很简单
类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallization)、使用(Using)和卸载(Unloading)这7个阶段。其中验证、准备、解析3个部分统称为连接(Linking原创 2022-09-22 22:17:07 · 838 阅读 · 0 评论 -
JVM 运行时内存空间详解——方法区
通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。本篇文章,咱们对方法区进行剖析,一探究竟。1. 方法区的理解方法区(Method Area) 与Java堆一样, 是各个线程共享的内存区域, 它用于存储已被虚拟机加载 的类型信息、常量、 静态变量、 即时编译器编译后的代码缓存等数据。【oracle官方文档】The Structure of the Java Virtual Machine《Java虚拟机规范》中明确原创 2021-09-02 23:22:31 · 1908 阅读 · 1 评论 -
JVM 运行时内存空间详解——元空间
通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。本篇文章,咱们对元空间进行剖析,一探究竟。1. 元空间介绍在JDK1.7之前,HotSpot 虚拟机把方法区当成永久代来进行垃圾回收。而从 JDK 1.8 开始,移除永久代,并把方法区移至元空间,它位于本地内存中,而不是虚拟机内存中。HotSpots取消了永久代,那么是不是也就没有方法区了呢?当然不是,方法区是一个规范,规范没变,它就一直在,只不过取代永久代的是元空原创 2021-08-24 23:08:23 · 18303 阅读 · 2 评论 -
JVM 运行时内存空间详解——堆
文章目录1. 什么是Java 堆2. 堆的特点3. 如何设置堆空间的大小1.maxMemory()2.totalMemory()3.freeMemory()通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。本篇文章,咱们对堆进行剖析,一探究竟。1. 什么是Java 堆对于Java应用程序来说, Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。 Java堆是被所有线程共享的一块内存区域, 在虚拟机原创 2021-08-15 15:00:50 · 3121 阅读 · 0 评论 -
JVM 运行时内存空间详解——本地方法栈
通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。本篇文章,咱们对本地方法栈进行剖析,一探究竟。什么是本地方法栈本地方法栈(Native Method Stacks) 与虚拟机栈所发挥的作用是非常相似的, 其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码) 服务, 而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务。特点本地方法栈加载native的类方法,native类方法存在的意义当然是填补原创 2021-07-19 17:37:10 · 445 阅读 · 3 评论 -
JVM 运行时内存空间详解——虚拟机栈
文章目录1.什么是虚拟机栈2.什么是栈帧3.设置虚拟机栈的大小4.局部变量表5.操作数栈6.动态链接7.方法返回地址通过上一篇文章,我们大体了解了JVM的整体架构,其分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。本篇文章,咱们对虚拟机器栈进行剖析,一探究竟。1.什么是虚拟机栈Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,即生命周期和线程相同。Java虚拟机栈和线程同时创建,用于存储栈帧。每个方法在执行时都会创建一个栈帧(原创 2021-07-19 16:50:35 · 821 阅读 · 3 评论 -
JVM 运行时内存空间详解——程序计数器
通过上一篇文章,我们大了解了JVM的整体架构,其大概分为:元数据(JDK7是方法区)、堆、虚拟机栈、本地方法栈、程序计数器几个部分。下面,咱们再对它进行逐一"解剖",一探究竟。1. PC 程序计数器什么是程序计数器程序计数器(Program Counter Register): 也叫PC寄存器,是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线原创 2021-07-19 00:51:31 · 752 阅读 · 3 评论 -
JVM整体架构,你了解吗
JVM整体架构根据 JVM 规范,JVM 内存共分为方法区、堆、虚拟机栈、本地方法栈、程序计数器五个部分。JVM分为五大模块:类装载器子系统 、 运行时数据区 、 执行引擎 、 本地方法接口 和 垃圾收集模块如上图所示,JVM 主要分为三个子系统:类加载器、运行时数据区和执行引擎。1. 类装载器子系统它主要功能是处理类的动态加载,还有链接,并且在第一次引用类时进行初始化。Loading - 加载,顾名思义,用于加载类,它有三种类加载器,根据双亲委托模型,从不同路径进行加载:Boots原创 2021-07-14 23:21:38 · 1633 阅读 · 11 评论