随笔分类 -  JVM

摘要:类加载子系统 类文件首先需要经过类加载子系统,进行加载,进类信息等加载到运行时数据区,生成Klass的实例。 在类加载子系统中有以下3个阶段操作(广义上的加载): 加载阶段 Bootstrap ClassLoader:引导类加载器,主要加载JDK里面的核心类 Extension ClassLoade 阅读全文 »
posted @ 2021-03-17 10:24 第十六封 阅读(401) 评论(0) 推荐(1) 编辑
摘要:开局一张图,前面已经从每一部分解析过JVM的内存结构了,现在按照顺序来分析: 整体上来看:类文件从类加载子系统,加载完成之后,主要存放在方法区(JRockit和H9没有方法区,这里指的是HotSpot)。运行时的数据主要是存放在运行时数据区,代码的解释编译优化以及垃圾收集,都是在执行引擎中。本地方法 阅读全文 »
posted @ 2021-03-16 10:44 第十六封 阅读(351) 评论(0) 推荐(0) 编辑
摘要:Sun Classic VM 世界上第一款商用 Java 虚拟机,JDK1.4 已经淘汰。 内部只有解释器,可以自己外挂JIT编译器,但是二者只能使用其一,不能配合工作。 hotspot 内置了该虚拟机。 解释器,需要逐行解释执行,效率低下。譬如:如果循环两千次,循环体很大,每次执行都需要解释执行。 阅读全文 »
posted @ 2021-03-11 12:59 第十六封 阅读(405) 评论(0) 推荐(0) 编辑
摘要:Github仓库地址:https://github.com/Damaer/JvmNote 文档地址:https://damaer.github.io/JvmNote/ JVM生命周期 启动 执行 退出 启动 Java虚拟机的启动时通过引导加载器(bootstrap class loader)创建一个 阅读全文 »
posted @ 2021-03-09 11:43 第十六封 阅读(139) 评论(0) 推荐(0) 编辑
摘要:2011年,JDK7发布,1.7u4中,开始启用新的垃圾回收器G1(但是不是默认)。 2017年,发布JDK9,G1成为默认GC,代替CMS。(一般公司使用jdk8的时候,会通过参数,指定GC为G1) 2018年,发布JDK11,带来了革命性ZGC,性能比较强。 虚拟机介绍 虚拟机,就是虚拟的计算机 阅读全文 »
posted @ 2021-03-07 14:50 第十六封 阅读(676) 评论(0) 推荐(1) 编辑
摘要:(一)java内存区域管理 C/C++每一个new操作都需要自己去delete/free,而java里面有虚拟机自动管理内存,不容易出现内存泄漏或者溢出的问题,但是不容易出现不代表不出现,了解虚拟机怎么使用和管理内存是十分重要的是,对程序优化或者问题排查有帮助。 运行时区域主要分为: 线程私有: 程 阅读全文 »
posted @ 2020-12-26 22:20 第十六封 阅读(206) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示