![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 67
动机至善
编程的三大境界:
1、初能望文生义、死记硬背,可小成(实现功能);
2、进能变通运用、举一反三,有一得(优化功能);
3、终能深入浅出、知行合一,方大就(凡事自动化)。
展开
-
Arthas学习笔记
目录1、问题2、是什么3、为什么要学3.1、支持线上反编译3.2、支持热部署3.3、可视化监控系统运行情况、JVM的实时运行情况3.4、快速定位热点问题,生成火焰图4、怎么用4.1、安装4.2、启动4.3、常用命令官方教程【需求驱动】所有的学习从需求开始,学习任何知识要想事半功倍,一定要先搞清楚它存在的意义和价值。1、问题案发现场:前两天刚上线了一个新功能,由于业务相对复杂,提供的是全自动的功能,对于客户来说都是接口直接操作,一个指令来了...原创 2021-04-10 20:34:50 · 248 阅读 · 0 评论 -
JVM参数详解
1、标准参数如下图:所有以“-”开头的参数,都是标准参数,所有版本都支持2、 非标参数如下图:-X开头的参数都是非标准参数3、不稳定参数如下图:以-XX开头的参数称为不稳定参数,部分版本的JVM支持想查询具体参数的时候,在命令末尾加 | grep xxx...原创 2021-04-05 15:45:49 · 184 阅读 · 0 评论 -
Jvm的运行时数据区
1、程序计数器(Program Counter)每个线程都有自己的程序计数器,用来存储即将要执行的指令。2、java虚拟机栈 (JVM Stacks)一个栈帧集,每个方法都有一个独立的栈帧【Frame】,栈帧的结构如下2.1 局部变量表(Local Variable Table)2.2操作数栈 (Operand Stack)2.3 动态链接(Dynamic Linking)举例method1中调用了method2,执行都method2();这行代码的时候,会根据一...原创 2021-04-05 15:42:31 · 147 阅读 · 1 评论 -
JVM的垃圾回收机制
目录1、什么是垃圾2、怎么找到垃圾2.1 引用计数法2.2 可达性算法3、怎么回收3.1 、标记清除算法3.2、拷贝算法3.3、标记压缩法1、什么是垃圾在JVM中,如果一个对象没有任何有效引用引用它,它就是垃圾。【说人话:就是生活中一件衣服没有任何活人可以穿,那它就是垃圾】2、怎么找到垃圾2.1 引用计数法概念:记录引用当前对象的指针个数,如果这个值是0,那它就是垃圾。【说人话:我要扔一件衣服,突然我发现这件衣服我爸能穿、我弟弟也能穿,那这个引用数值...原创 2021-04-05 14:44:44 · 106 阅读 · 0 评论 -
Java对象详解
1、对象的创建过程1.1、class loading(将类的class加载到内存中)1.2、class linking (对class的校验,以及对静态变量赋默认值)1.3、class initilizing (对象的静态变量赋初始值)1.4、申请对象内存(就是new Object())1.5、成员变量赋初始值1.6、调用构造方法(成员变量顺序赋初始化值、执行构造方法语句)2、对象的存储布局2.1、 普通对象2.1.1对象头 markword 占8字节2.1...原创 2021-04-05 12:19:58 · 416 阅读 · 0 评论 -
存储结构-缓存行-乱序问题
JMM(Java Memory Mode)1、存储器的层次结构图其中L0 L1 L2是CPU独有的,L3以上对于多个CPU来说是共享的。读数据的时候是自上而下,就近原则。2、缓存行(Cache line)2.1 什么是缓存行问题计算机内部缓存的最小单位是行,一般是64字节(512为),那么比如我们定义了两个变量 int a,b;这两个变量一共占8字节,我们先假设他存储在同一行,当CPU执行指令用到这两个变量的时候,如上图,先回读取到自己的私有缓存L2或L1,缓存的单位是一行,同.原创 2021-04-04 01:17:54 · 445 阅读 · 0 评论 -
JVM类加载器-加载类过程
1、Loading这一步很简单,就是将硬盘上的某一个二进制的class文件加载到内存中。2、Linking2.1 Verification校验,比如class文件的格式是否正确、内容是否安全2.2 Prepatation给class文件的静态变量赋默认值2.3 Resolution常量池里的符号引用转换成内存地址3、Initializing调用静态代码块,静态变量赋初始化值类加载器的层次,如下图:这里解释一下,所谓双亲委派机制,就是比如要加载一个...原创 2021-04-01 00:48:58 · 73 阅读 · 0 评论 -
JVM学习总结
概述: JVM(Java Vintual Machine),简称java虚拟机,它的本质是提供了一组规范,是java跨平台的核心。之所以能跨平台,在不同的操作系统上运行,就是因为java提供了不同操作系统的虚拟机。 JVM内部主要分为三大块:类加载系统、运行时数据区、执行引擎,通常我们说内存模型指的都是运行时数据区的内存结构。一、JVM的内存模型方法区 方法区(No Heap):方法区是个抽象虚拟的概念,永久代(元空间)其实是方法区的实现...原创 2020-09-04 10:29:36 · 87 阅读 · 0 评论