JVM
文章平均质量分 94
超级码里喵
这个作者很懒,什么都没留下…
展开
-
【JVM】JVM内存结构之——G1收集器
目录1. 什么是G12. G1收集器发展历程3. G1收集器分区划分3.1 为什么G1收集器需要设计巨型对象3.2 G1收集器参数设置3.3 G1收集器回收的细节3.4 G1收集器Rset问题(记忆集)3.5 G1两种回收策略4. G1收集器优缺点5. G1收集器核心配置参数1. 什么是G1G1收集器(Garbage-First Garbage Collector) 整堆收集。G1收集器是一款在server端运行的垃圾收集器,专门针对于拥有多核处理器和大内存的机器,在JDK 7u4版本发行时被正式原创 2022-05-12 13:48:09 · 4888 阅读 · 2 评论 -
【JVM】JVM内存结构之——垃圾收集器(并发与并行/ GC性能指标/ 垃圾收集器组合关系/ CMS收集器/ G1收集器)
目录1. System.gc()方法2. 并行与并发概念2.1 并发的概念2.2 并行的概念3. 垃圾回收器并行与串行区别4. 并行收集器(parallel) 与并发收集器(concurrent)区别5. 评估 GC 的性能指标5.1 吞吐量(throughput)5.2 暂停时间(pause time)5.3 吞吐量 vs 暂停时间区别6. 垃圾收集器发展历史7. 7款经典的垃圾收集器8. 经典的垃圾收集器关系9. 垃圾收集器组合关系10. 串行垃圾收集器Serial、Serial old10.1 串行收原创 2022-05-12 13:42:23 · 1750 阅读 · 1 评论 -
【JVM】JVM内存结构之——垃圾回收算法(引用计数法/ 可达分析算法/ 标记清除算法/ 标记复制算法/ 标记压缩算法)
目录1. 什么是垃圾2. 为什么需要GC3. C/C++时代(垃圾回收)4. 自动内存管理4.1 自动内存管理优点4.2 自动内存管理缺点4.3 垃圾回收内存核心区域5. 垃圾回收相关算法5.1 引用计数法5.2 循环依赖5.3 如何证明Java没有使用引用计数法5.4 引用计数法解决循环依赖问题5.5 可达分析算法(GCRoot)5.5.1 可达性分析算法实现思路5.5.2 哪些对象可以作为 GC Root 呢?5.5.2.1 虚拟机栈(栈帧中的本地变量表)中引用的对象5.5.2.2 方法区中类静态属性引原创 2022-05-12 12:21:14 · 704 阅读 · 0 评论 -
【JVM】JVM内存结构之——常量池
目录1. 常量池的分类2. 静态常量池3. 运行常量池4. 字符串常量池5. 如何证明字符串常量池是存放在堆中5.1 JDK1.8字符串常量池存放在堆中5.2 JDK1.6字符串常量池存放在方法区常量池(Constant Pool)1.1 常量池(Class文件常量池):.java经过编译后生成的.class文件,是Class文件的资源仓库。Java源代码 编译成 class常量池分类:运行时常量池 类加载器读取class文件到内存中,该常量池就是运行时常量池静态常量池 ja原创 2022-05-12 11:31:02 · 3509 阅读 · 0 评论 -
【JVM】JVM内存结构之——方法区(元空间)
目录1. 栈、堆、方法区的交互关系2. 方法区的理解3. 设置方法区大小与 OOM3.1 JDK7及以前(永久代)3.2 JDK8及以后(元空间)4. 方法区OOM异常如何解决4.1 JDK7及以前(永久代)4.2 JDK8及以后(元空间)5. 方法区的内部结构5.1 类型信息5.2 域(Field)信息5.3 方法(Method)信息6. 永久代演进过程6.1 永久代为什么要被元空间替代?6.2 字符串常量池为什么要调整位置?6.3 如何证明 静态变量是存放在堆中?⽅法区与 Java 堆⼀样,是各个线原创 2022-05-12 11:03:23 · 2923 阅读 · 0 评论 -
【JVM】JVM内存结构之——栈帧内部结构原理分析
目录1. 局部变量表2. Slot(变量槽--index)3. jclasslib分析字节码1. 局部变量表public static void main(String[] args) { String str = "demo01"; int j = 20; double d = 66.66; boolean b = true;}局部变量表中的变量只在当前方法调用中有效。在方法执行时,虚拟机通过使用局部变量表完成参数值到参数变量列表的传递过程。当方法调用结束后,原创 2022-05-12 10:40:25 · 515 阅读 · 0 评论 -
【JVM】JVM内存结构之——堆内存细节(堆内参数设置/ GC分类/ GC日志分析/ TLAB/ 内存逃逸/ 堆空间常见参数)
目录1. 堆内存细节划分2. 堆内存参数设置3. 查看堆内存情况4. -XX:+PrintGCDetails5. 新生代/老年代比例参数5.1 -XX:NewRatio5.2 -XX:SurvivorRatio6. Stop the World机制7. GC的分类7.1 年轻代 (Young)GC(Minor GC)触发机制7.2 Full GC/MajorGC7.2.1 MajorGC7.2.2 Full GC 触发机制7.3.3 大对象直接晋升老年代8. GC日志的分析6.1 新生代GC日志分析(PSY原创 2022-05-12 01:46:50 · 963 阅读 · 0 评论 -
【JVM】JVM内存结构之——堆(堆内存泄漏问题/ 内存泄漏分类/ 内存溢出/ 内存溢出解决方案/ 排查堆内存泄漏问题/ CPU飙高问题)
目录1. 程序计数器2. 堆3. 堆内存泄漏问题4. 内存泄漏的分类5. 堆内存溢出问题6. 常见内存解决方案6.1 如何解决内存溢出1. 程序计数器1.程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,指向下一个将要执行的指令代码,由执行引擎来读取下一条指令。更确切的说,一个线程的执行,是通过字节码解释器改变当前线程的计数器的值,来获取下一条需要执行的字节码指令,从而确保线程的正确执行。2.为了确保线程切换后(上下文切换原创 2022-05-11 01:15:31 · 933 阅读 · 1 评论 -
【JVM】Java类加载器设计原理(ClassLoader源码解读/ SPI机制/ 绕开双亲委派/ 常见Java虚拟机)
目录1. 什么是类加载器2. 类加载器加载的过程3. Class文件读取来源4. 类加载器的分类5. 那些操作会初始化类加载器6. 类加载器的双亲委派机制6.1 双亲委派机制机制的好处7. ClassLoader源码解读7.1 Launcher类源码解读7.2 双亲委派机制源码分析7.3 如何自定义一个类加载器7.4 自定义类加载器7.5 根据类加载器手写热部署插件7.6 什么是SPI机制7.7 如何绕开双亲委派原则8. 常见Java虚拟机9. 常见的几款java虚拟机1. 什么是类加载器将我们的cl原创 2022-05-10 21:51:32 · 426 阅读 · 0 评论 -
【2022最新Java面试宝典】—— Java虚拟机(JVM)面试题(51道含答案)
目录一、Java内存模型1. 我们开发人员编写的Java代码是怎么让电脑认识的2. 为什么说java是跨平台语言3. Jdk和Jre和JVM的区别4. 说一下 JVM由那些部分组成,运行流程是什么?5. 说一下 JVM 运行时数据区6. 详细的介绍下程序计数器?(重点理解)7. 详细介绍下Java虚拟机栈?(重点理解)8. 你能给我详细的介绍Java堆吗?(重点理解)9. 能不能解释一下本地方法栈?10. 能不能解释一下方法区(重点理解)11. 什么是JVM字节码执行引擎12. 你听过直接内存吗?13. 知原创 2022-05-02 08:00:00 · 8921 阅读 · 1 评论