JVM
山间木匠
欢迎关注公众号“山间木匠”,后端(java、spring、spring cloud)、前端(小程序、VUE)等你来撩!!!
展开
-
【JVM系统学习之路】常见垃圾回收器
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial目录GC 分类与性能指标不同的垃圾回收器概述Serial 回收器: 串行回收ParNew 回收器:并行回收Parallel 回收器:吞吐量优先CMS 回收器:低延迟G1 回收器G1 回收器:区域化分代式垃圾回收器总结GC 分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的 JVM 来实现。由于 JDK 的版本处于高速迭代过.原创 2020-12-02 09:33:24 · 313 阅读 · 0 评论 -
【JVM系统学习之路】垃圾回收相关概念
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial目录System.gc() 的理解内存溢出与内存泄漏Stop the world垃圾回收的并行与并发安全点与安全区域再谈引用再谈引用:强引用再谈引用:软引用再谈引用:弱引用再谈引用:虚引用再谈引用:终结器引用System.gc() 的理解在默认情况下,通过 system.gc() 或者 Runtime.getRuntime().gc() 的调用,会.原创 2020-11-30 09:06:37 · 285 阅读 · 0 评论 -
【JVM系统学习之路】垃圾回收相关算法
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial目录标记阶段:引用计数算法标记阶段:可达性分析算法对象的 finalization 机制MAT 与 Jprofilter 的 GC Roots 溯源清除阶段: 标记-清除算法清除阶段:复制算法清除阶段:标记-压缩算法小结分代收集算法标记阶段:引用计数算法垃圾标记阶段:对象存活判断在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,.原创 2020-11-27 09:10:11 · 161 阅读 · 0 评论 -
【JVM系统学习之路】StringTable
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorialString 的基本特性String:字符串,使用一对 ”” 引起来表示String s1 = "str"; // 字面量的定义方式String s2 = new String("str");string 声明为 final 的,不可被继承String 实现了 Serializable 接口:表示字符串是支持序列化的。实现了 Comparable 接口:表示 s.原创 2020-11-26 09:04:46 · 110 阅读 · 0 评论 -
【JVM系统学习之路】看懂方法区
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial方法区(Method Area) 与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”(Non-Heap),目的是与Java堆区分开来。目录栈、堆、方法区的交互关系方法区的理解设置方法区大小与 OOM方.原创 2020-11-23 09:03:04 · 149 阅读 · 3 评论 -
【JVM系统学习之路】 神奇的 JAVA 堆,难学会?
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial前言面试中是否遇到如下与堆相关问题?JVM 内存为什么要分成新生代,老年代,持久代?新生代中为什么要分为 Eden 和 Survivor?JVM 有哪些调优参数?怎样调优?…目录堆的核心概述设置堆内存大小与OOM年轻代与老年代图解对象分配过程Minor GC 、Major GC、 Full GC堆空间分代思想内存分配策略为对象分配内存:TLAB.原创 2020-11-17 08:55:34 · 189 阅读 · 0 评论 -
【JVM系统学习之路】初步了解本地方法接口和本地方法栈
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial本地方法接口什么是本地方法本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。《Java虚拟机规范》对本地方法栈中方法使用的语言、使用方式与数据结构并没有任何强制规定,因此具体的虚拟机可以根据需要自由实现它,甚至.原创 2020-11-11 09:49:37 · 157 阅读 · 0 评论 -
【JVM系统学习之路】JAVA 虚拟机栈
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial虚拟机栈概述由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台 CPU 架构不同,所以不能设计为基于寄存器的。 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。有不少 Java 开发人员一提到Java内存结构,就会非常粗粒度地将JVM中的内存区理解为仅有 Java 堆(heap)和 Java 栈(stack)?为什么?首先栈.原创 2020-11-04 09:11:32 · 325 阅读 · 1 评论 -
【JVM系统学习之路】运行时数据区概述和程序计数器
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial本篇将 运行时数据区概述及线程 和 程序计数器 的知识点由于不是很多所以就一起梳理,也是为后续学习的知识点做一个铺垫。运行时数据区概述运行时数据区,它是在类加载完成后的阶段,如果对类加载不是很熟悉的小伙伴,可以看我上一篇文章。当我们通过前面的: 类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执行引擎对我们的类.原创 2020-11-02 09:10:55 · 122 阅读 · 0 评论 -
【JVM系统学习之路】一篇看懂类加载
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial嗨喽,小伙伴大家好,我是小春哥,今天是打卡 【JVM系统学习之路】 的第二篇文章 类加载子系统 ,在学习本章节首先回顾 上一章节【JVM系统学习之路】JVM与Java体系结构的JVM整体结构。此图一定牢记于心,在接下来的 JVM 知识点都是从此图展开进行的,如果了解看过JVM 面试题,大家对此图应该还是比较熟悉,小春哥此图我都了解了,想要一个更完整的 JVM 架构图,有吗?有.原创 2020-10-30 11:27:05 · 446 阅读 · 1 评论 -
【JVM系统学习之路系列】 JVM 概述篇
JVM系统学习之路系列演示代码地址:https://github.com/mtcarpenter/JavaTutorial前言大家好,我是小春哥,前面我用了10多个章节对并发编程 JUC 相关知识进行梳理,如果对 JUC知识还不了解的同学,关注我的公众号【山间木匠】从菜单底部可直达,从本篇文章开始更新 JVM 相关知识点,每一个JAVA 开发者应该都能深刻体会,多线程、并发、JVM 是难点也是痛点。国内学习 JVM 虚拟机的人几乎是人手一本,周志明大神的“深入理解Java虚拟机”书籍。我第一次看.原创 2020-10-28 09:10:35 · 1062 阅读 · 1 评论