JVM
文章平均质量分 91
phn555
生活,就应当努力使之美好起来
展开
-
JVM之内存管理与垃圾回收
https://www.yuque.com/u21195183/jvm/qpoa81 说说JVM内存模型 答 根据《JAVA虚拟机规范》将java内存划分为程序计数器、虚拟机栈、本地方法栈、堆和方法区。 1. 程序计数器 是用于存储字节码行号的,当线程获取cpu执行权时,根据该值可以知道上一次的执行位置。这个内存没有OOM也不会进行GC。 2. 虚拟机栈与本地方法栈 由于hotspot虚拟机的实现没有区分虚拟机栈与本地方法栈,所以这里就一起说了,虚拟机栈是线程的执行模型,每一个栈帧代表一个方法。一个栈帧原创 2022-03-31 18:47:41 · 601 阅读 · 0 评论 -
JVM之性能监控与优化
jps:查看正在运行的Java进程 jstat:查看JVM统计信息 答 类装载相关的: -class:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等 垃圾回收相关的: -gc:显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息。 -gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。 -gcutil:显示内容与-gc基本相同,但输出主要关原创 2022-03-31 18:47:08 · 147 阅读 · 0 评论 -
JVM之类加载系统
类加载器子系统作用? 答 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射 加载阶段 答 加载阶段可细分为加载、链接、初始化。 链接又可分为验证、准原创 2022-03-21 18:24:21 · 139 阅读 · 0 评论 -
深入理解JVM虚拟机(1)运行时数据区
运行时数据区 运行时数据区由:程序计数器、虚拟机栈、本地方法栈、堆和方法区组成。 程序计数器:记录当前执行的代码行号,由于java多线程是通过线程轮流切换,分配处理器执行时间来实现,任何一个确定的时刻,一个CPU只能执行一个线程的代码,为例保证下一次线程执行时,能正常继续执行,每个线程需要独立的计数器 虚拟机栈:描述了虚拟机执行方法的内存模型。当执行一个方法时,虚拟机会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、返回地址等。一个方法执行至结束的过程就是一个栈帧从入栈到出栈的过程。 局原创 2020-11-02 20:10:49 · 298 阅读 · 0 评论 -
深入理解JVM虚拟机(2)类加载机制
类加载过程 一个类从被加载到虚拟机内存开始,到卸载出内存为止,一共需要经历加载、验证、准备、解析、初始化、使用和卸载,其中加载、验证、准备、解析、初始化又被称为类加载过程,而验证、准备、解析又被称为连接。 何时必须初始化 对于初始化阶段,《JAVA虚拟机规范》有严格规定,(目前为止 jdk 12之前,之后不清楚)有且仅有下面6种情况: 遇到new、getStatic、putStatic、invokeStatic、 这四个字节码指令时 场景: 1)使用new关键字实例化对象 2)读取或设置一个类的静态原创 2020-11-02 21:26:41 · 283 阅读 · 0 评论 -
深入理解JVM虚拟机(3)垃圾回收算法与实现
传统的垃圾回收算法与实现(JDK9之前) 如何判断数据可回收 这里是引用 标记-清楚算法 这里是引用 复制算法 这里是引用 标记整理算法 这里是引用 低延迟的垃圾回收器 G1 这里是引用 Shenandoah 这里是引用 ZGC 这里是引用 ...原创 2020-12-08 21:07:46 · 330 阅读 · 0 评论