文章分类 - JVM 笔记
摘要:内容来自B站【狂神说Java】JVM快速入门篇 JMM 什么是JMM?Java Memory Model(Java内存模型) 它干嘛的?从官方、博客、对应的视频中学习。 作用:缓存一致性协议,用于定义数据读写的规则(找到这个规则,遵守)。 JMM定义了线程工作内存和主内存之间的抽象关系:线程之间的共
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 内存效率(时间复杂度) 复制算法 > 标记清除算法 > 标记压缩算法 内存整齐度 复制算法 = 标记压缩算法 > 标记清除算法 内存利用率 标记压缩算法 = 标记清除算法 > 复制算法 思考 有没有最优算法?没有最好的算法,只有最合适的算法,所以GC使
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 标记清除算法 优点:不需要额外的空间。 缺点:两次扫描严重浪费时间,会产生内存碎片 标记压缩算法 是标记清除的再优化。 标记清除压缩 先标记清除几次,再进行压缩。
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 新生代分为伊甸园区、幸存区from、幸存区to,对于幸存区,谁空谁是to。 每次GC都会将伊甸园区和幸存区from活的对象复制到幸存区to中。一旦GC后,伊甸园区和幸存区to就会是空的。 当一个对象经历了15次(可以调:-XX:MaxTurningTh
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 GC的作用区域:堆和方法区。 JVM在进行GC时,并不是对这三个区域统一回收,大部分时候,回收都是新生代。 新生代 幸存区(from、to) 老年代 GC两种类型:轻GC(普通的GC)、重GC(全局GC) 题目 JVM的内存模型和分区,详细到每个区放什
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 在一个项目中,突然出现了OOM故障,那么该如何排除?研究为什么出错? 最好能够看到代码第几行出错,这个时候可以使用内存快照分析工具:MAT(Eclipse的)、JProfiler Debug,一行行分析代码!已经上线的产品这么分析不现实。 MAT、JP
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 一、新生区 一个对象诞生、成长,甚至死亡的地方。 伊甸园区 -所有对象都是在伊甸园区new出来的。 -该区满了会触发一次轻GC,将还有引用的对象放到幸存者区。 幸存者区(0,1): 新生区(伊甸园区和两个幸存者区)都满了,会触发一次重GC,将幸存区的对
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 一、三种JVM Sun公司 HotSpot(目前学习的) Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode) BEA JRockit IBM J9 VM 二、堆(Heap)
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 栈:数据结构,先进后出 程序 = 数据结构 + 算法 队列:先进先出(FIFO:First Input First Output) 栈内存主管程序的运行,生命周期和线程同步;线程结束,栈内存也就释放了,程序就结束了。 对于栈来说,不存在垃圾回收的问题。
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 一、native package com.learn.pojo; public class Demo { /* 凡是带了native关键字的,说明java的作用范围达不到了,会去调用底层C语言的库。 会进入本地方法栈。 调用本地方法接口(JNI)。 J
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 一、回顾面向对象 new对象 和 Class对象 二、类加载器 作用:加载Class文件 分类 虚拟机自带的加载器 启动类(根)加载器 扩展类加载器 应用程序(系统类)加载器 package com.learn.pojo; public class C
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 一、JVM的位置 JVM运行在操作系统之上,Windows、Linux、Mac。 操作系统之下是硬件体系,Intel、Spac 二、JVM的体系结构 2. JVM调优99%都是在调堆
阅读全文
摘要:内容来自B站【狂神说Java】JVM快速入门篇 JVM探究 一、面试题 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新? 什么时OOM?什么时栈溢出StackOverFlowError?怎么分析? JVM的常用调优参数有哪些? 内存快照如何抓取,怎么分析Dump文件? 谈谈JVM中,类加
阅读全文