随笔分类 - JVM
摘要:一、先记住 3 大特性是什么 可见性:一个线程改了变量,其他线程能立刻看到最新值 有序性:禁止 CPU 指令重排,代码按顺序执行 原子性:操作不可被打断,要么全部完成,要么不做 二、三者能力总表(直接背) 关键字可见性有序性原子性 volatile ✅ 保证 ✅ 保证 ❌ 不保证 synchroni
阅读全文
摘要:-XX:PretenureSizeThreshold= 对象直接晋升老年代的大小阈值 1. 它是干嘛的? 一句话:大于这个大小的对象,直接在老年代分配,不进新生代! 不用经过 Eden、不用经过 Survivor、不用经历 GC 复制。 2. 默认值 默认 = 0意思是:不开启,所有对象都先去新生代
阅读全文
摘要:一、最常见的 8 大 JVM 问题(90% 调优都围绕这些) 1. 频繁 Young GC / Minor GC 过多 现象:CPU 高、接口响应慢、GC 日志刷屏 原因:Eden 区太小、对象创建太快 调优方向:加大新生代、增大 Eden 区 2. 频繁 Full GC 或 Full GC 耗时过
阅读全文
摘要:类加载: 类从被加载到虚拟机内存,到卸载出内存,整个生命周期分为了七个阶段,如下图所示。 类的生命周期 其中的验证,准备,解析也被称为连接。 加载、验证、准备、初始化、卸载这五个阶段的顺序是确定的。 类的加载过程按这种顺序进行,而解析阶段有可能在初始化之后进行,这主要是为了满足java语言运行时的动
阅读全文
摘要:JAVA 虚拟机收集垃圾的区域: 【垃圾回收主要是指方法区和堆内存的回收,这些区域的内存是变化的。其它区域的内存跟随方法的结束或者线程的结束而自动回收】 程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。因此这几个区域的内
阅读全文
摘要:Hotspot JVM架构细节与运行机制 首先,java Complier将.java文件编译为.class字节码文件,之后由类加载器子系统装载.class文件,该部分的主要工作是查找并验证类文件,完成相关内存空间的分配和对象赋值。类文件加载到内存之后,由运行时数据据完成数据存储与数据交换。 运行时
阅读全文

浙公网安备 33010602011771号