JVM
文章平均质量分 85
香气袭人知骤暖
但行好事,莫问前程
展开
-
JVM相关问题整理
1.运行时数据区域(内存区域)程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。此内存区域是唯一一个在 Java 虚拟机规范中没有规定任何 OutOfMemoryError 情况的区域。Java虚拟机栈与程序计数器一样,Java 虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是 Java 方法执行的内存模型:每个方法在执行的同时都原创 2022-03-29 23:14:05 · 1355 阅读 · 0 评论 -
jvm调优-命令行篇
常用命令有: jps jstat jstack jmap jinfojpsJVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。命令格式: jps [options] [hostid] 说明:[] :可省略 |: 多选一 <>:必选参数 …:可多次出现option参数:-l : 输出主类全名或jar路径-q : 只输出LVMID-m : 输出JVM启动时传递给main()的参数-v : 输出JVM启动时显示指定原创 2022-05-21 14:28:32 · 281 阅读 · 0 评论 -
垃圾回收器CMS与G1的区别
一. CMS垃圾收集器CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现,在标记清理过程中不会导致用户线程无法定位引用对象,仅作用于老年代收集1. 1 步骤如下:初始标记(STW): 仅标记GCroots能直接关联的对象,速度比较快;并发标记: 可以和用户线程并发执行,通过GCRoots Tracing 标记所有可达对象;重新标记():修复并发标记期间,因用户线程继续运作而导致标记产生变动的那一部分对象的标记记录;并.原创 2022-05-08 22:49:43 · 664 阅读 · 0 评论 -
Java内存模型(Java Memory Model)
1. 基本概念:(1)什么是可见性:内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。(2)共享变量:如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这个几个线程的共享变量。(3)主内存:保存了程序的所有变量。(4)工作内存:每个线程都有自己的独立工作内存,里面保存了该线程使用的变量的副本(主内存对该变量的一份拷贝)2.Java内存模型(JMM):描原创 2022-05-07 23:26:16 · 1013 阅读 · 0 评论 -
三色标记算法
对于三色标记算法而言, 对象会根据是否被访问过(也就是是否在可达性分析过程中被检查过)被分为三个颜色:白色、灰色和黑色:白色:这个对象还没有被访问过,在初始阶段,所有对象都是白色,所有都枚举完仍是白色的对象将会被当做垃圾对象被清理。灰色:这个对象已经被访问过,但是这个对象所直接引用的对象中,至少还有一个没有被访问到,表示这个对象正在枚举中。黑色:对象和它所直接引用的所有对象都被访问过。这里只要访问过就行,比如A只引用了B,B引用了C、D,那么只要A和B都被访问过,A就是黑色,即使B所引用的C或D还没原创 2022-05-03 22:34:46 · 570 阅读 · 0 评论 -
JVM类初始化时机(四种主动引用方式)
Java虚拟机把Class文件加载到内存的过程包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(using)、和卸载(Unloading)七个阶段。其中验证、准备和解析三个部分统称为连接(Linking),这七个阶段的发生顺序如下图所示:Java虚拟机规范没有强制性约束在什么时候开始类加载过程,但是对于初始化阶段,虚拟机规范则严格规定了有且只有四种情况必需立即对类进行“初始化”(而原创 2022-05-02 00:15:05 · 1369 阅读 · 2 评论