踏踏实实学习JVM
文章平均质量分 76
静下心来,踏踏实实的学习JVM
Simba_cheng
低调,低调
展开
-
JVM_0_序
《深入理解Java虚拟机——JVM高级特性与最佳实践》这本书四个月之前匆匆翻过一遍,当时算是粗略的翻了一遍,没有好好看里面的内容。现在空闲下来,好好地将这个本回味下..由于先前粗略的翻阅过,也知道JVM的水很深,翻开JVM的目录,感觉还是有点虚...除去书中第一章,其余的我都根据目录,罗列了大致的内容,还是很多的,每一个点都能扩散出很多的内容这里面还没有经过挑选,暂时先写下来,...原创 2017-09-15 21:56:25 · 258 阅读 · 0 评论 -
JVM_0.5_小故事
"深入理解Java虚拟机"这本书去年就买了,一直忙于公司项目,没时间看,后来看了下面这个文章,一下子就来了兴趣(原文 : https://mp.weixin.qq.com/s/SsctgcbwhCRbxTnbaZyx_A 公众号 : 码农翻身) 硬着头皮,看完了这本书....然后根据这本书,整理了一些学习笔记,学习笔记中有些内容来自于"左萧龙博客" http://www.zu...转载 2017-05-21 14:04:25 · 631 阅读 · 0 评论 -
JVM_1.0_运行时内存区域
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2017-09-15 22:12:09 · 862 阅读 · 0 评论 -
JVM_1.1_运行时内存区域_堆
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-10-20 12:27:26 · 427 阅读 · 0 评论 -
JVM_1.2_运行时内存区域_Java虚拟机栈
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-09-27 22:00:13 · 381 阅读 · 0 评论 -
JVM_1.3_运行时内存区域_方法区
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-09-27 22:00:54 · 416 阅读 · 0 评论 -
JVM_1.4_运行时内存区域_本地方法栈
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-09-27 22:07:48 · 472 阅读 · 0 评论 -
JVM_1.5_运行时内存区域_程序计数器
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-09-27 22:01:23 · 617 阅读 · 0 评论 -
JVM_1.6_运行时内存区域_运行时常量池
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-10-02 00:01:33 · 720 阅读 · 0 评论 -
JVM_1.7_运行时内存区域_栈帧
运行时内存区域这块,如果不将内存各个区域做什么的了解清楚,后面看的会很累。之前将JVM运行时内存区域的内容,整理在了一篇文章中。在后续深入、细致的学习中,整理的内容越来越多,一篇的话,会导致篇幅过长。所以将《JVM运行时内存区域详解》分为以下几个章节:JVM_1.0_运行时内存区域JVM_1.1_运行时内存区域_堆JVM_1.2_运行时内存区域_Java虚拟机栈JVM_...原创 2018-10-20 18:29:18 · 592 阅读 · 0 评论 -
JVM_1.8_通过递归代码,来看Java虚拟机栈
前两天在看Lua,看到一个Demo,是个递归,当时脑子看的有点懵逼...没想出来是怎么回事...然后我用Java写了一下(还是java代码熟悉一点)public static void main(String[] args) { int number = 3; System.out.println(fact(number));;}private static i...原创 2019-01-16 19:31:55 · 924 阅读 · 0 评论 -
JVM_2.0_OutOfMemoryError异常
OutOfMemoryError异常实战通过前面的内容,了解熟悉了JVM运行时内存区域。接下来尝试一下看看内粗溢出都是什么样子的。在Java虚拟机规范的描述中,除了程序计数器之外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError异常的可能。我将Java虚拟机规范中文版上传了,点击下面链接,即可下载Java虚拟机规范SE7中文版 堆溢出Ja...原创 2017-09-17 09:44:44 · 385 阅读 · 0 评论 -
JVM_3.0_垃圾收集器与内存分配策略_哪些内存需要回收_1
目录前言什么是垃圾收集回收(GC)为什么垃圾收集回收(GC)引用计数器算法可达性分析算法再谈引用强引用软引用弱引用虚引用生存还是死亡回收方法区这里将《Java虚拟机规范中文版》上传了,点击下面链接,即可下载:Java虚拟机规范SE7中文版 前言从前面的《运行时内存区域》系列文章中了解到,JVM运行时内存区域主要分为:堆、方法区...原创 2017-09-17 10:28:01 · 363 阅读 · 0 评论 -
JVM_5_垃圾搜集算法
垃圾搜索算法 参考资料:《JVM内存管理------GC简介》《Java虚拟机垃圾回收(二)垃圾回收算法:标记-清除算法 复制算法 标记-整理算法 分代收集算法 火车算法》《Java Platform, StandardEdition HotSpot Virtual Machine Garbage Collection Tuning Guide》 Java虚拟机规范中文原创 2017-09-17 12:04:22 · 554 阅读 · 0 评论 -
JVM_6_HotStop的算法实现
这个章节,我看了一点点...稍微了解下,后面在做补充枚举根节点以可达性分析(根节点搜索算法)为例,它对执行时间的敏感体现在GC停顿上,因为这项分析工作必须在一个能确保一致性的快照中进行。这里的一致性的意思:整个分析期间整个执行系统看起来就像被冻结在某个时间点上,不可以出现分析过程中对象引用关系还在不断变化的情况。这点不满足的话 分析结果的准确性就无法得到保证原创 2017-10-12 18:53:23 · 998 阅读 · 0 评论 -
JVM_7_垃圾搜集器
垃圾搜集器参考资料:《 Java虚拟机垃圾回收(三) 7种垃圾收集器:主要特点 应用场景 设置参数 基本运行原理》我们这里看下Hotspot虚拟机的七种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1垃圾收集器是垃圾收集算法(标记-清除算法、复制算法、标记-整理算法)原创 2017-10-12 19:13:06 · 486 阅读 · 0 评论 -
JVM_8_内存分配与回收策略
内存分配与回收策略参考资料:《Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法》在之前看"分代收集算法"的时候,我们知道目前几乎所有商业虚拟机的垃圾收集器都采用分代收集算法,对于Hotspot虚拟机年代划分,如下图:对象的内存分配从大体上讲:在堆上分配,主要在新生代对的Eden区中分配。少数情况下,可原创 2017-10-13 10:30:23 · 504 阅读 · 0 评论 -
JVM_9_垃圾收集器参数
JVM 垃圾收集器参数参考资料:《JVM内存管理------垃圾搜集器参数精解》这篇是单独加的,在网上找资料的时候,发现这篇文章,有不少JVM参数,所以摘录下来。垃圾搜集器选择参数UseSerialGC:开启此参数使用serial & serial old搜集器(client模式默认值)。UseParNewGC:开启此参数使用ParNew & ser原创 2017-10-17 23:03:53 · 422 阅读 · 0 评论 -
JVM_10_JDK命令行工具
Sun JDK工具名称主要作用jps显示指定系统内所有的HotSpot虚拟机进程(Java程序进程号)jstack用于收集HotSpot虚拟机各方面的运行数据jinfo显示虚拟机配置信息jmap生成虚拟机的内存存储快照原创 2017-10-17 23:07:23 · 718 阅读 · 0 评论 -
JVM_11_JDK可视化工具
JDK可视化工具JConsole:Java监视与管理控制台基于JMX的可视化监视,管理工具。管理的部分功能针对JMX MBean进行。里面可以监控内存,线程,加载类,MBeanjvisualvm:多合一故障处理工具jvisualvm是目前为止JDK发布的功能最强大的运行监视和故障处理程序。除了运行监视,故障处理外,还提供了性能原创 2017-10-18 23:21:11 · 694 阅读 · 0 评论 -
JVM_12_Class文件结构
类文件结构参考资料:《Java Class文件结构解析 及 实例分析验证》还记得那个小故事嘛?在看这个之前,你可以回顾下《JVM_0.5_小故事》学习了解Class文件的数据结构是了解虚拟机的重要基础之一。这方面的学习会比较枯燥,so,来吧...Class文件是JVM执行引擎的入口,也是Java技术体系的基础构成之一;了解Class文件的结构对后原创 2017-10-18 23:34:08 · 292 阅读 · 0 评论 -
JVM_13_类加载的时机
虚拟机类加载机制参考资料:《JVM进阶(十四)——初识JAVA 类加载机制》虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。在Java语言中,类型的加载、连接和初始化过程都是在程序运行期间完成的。类加载的时机类从被加载到虚拟机内存中开始,到卸载出原创 2017-10-18 23:43:26 · 282 阅读 · 0 评论 -
JVM_14_类加载的过程
类加载过程下面我们看下Java虚拟机中类加载的全过程,也就是加载、验证、准备、解析和初始化这5个阶段所执行的具体动作。1. 加载"加载"是"类加载"(Class Loading)过程的一个阶段(简单地说,就是"加载"包含在"类加载"之中..)。在加载阶段,虚拟机需要完成以下三件事情: a. 通过一个类的全限定名来获取定义此类的二进制字节流原创 2017-10-18 23:59:48 · 280 阅读 · 1 评论 -
JVM_15_类加载器
类加载器参考资料:《JVM进阶(十六)——JAVA 双亲委派模型》虚拟机设计团队把类加载阶段中得到"通过一个类的全限定名来获取此类的二进制字节流",这个动作放到Java虚拟机外部去实现;以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为"类加载器"。类与类加载器类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用原创 2017-10-19 00:22:16 · 244 阅读 · 0 评论 -
JVM_16_运行时栈帧结构
运行时栈帧结构参考资料:《图解JVM字节码执行引擎之栈帧结构》《Java Virtual Machine Specification Java SE 7 》栈帧在之前《JVM_1_运行时内存区域》之中,我们讲解过栈、栈帧,我们先来回顾一下:栈 《Java虚拟机规范 Java SE 7》一书中的说明:每一条Java虚拟机线程都有自己私有的Jav原创 2017-10-19 12:40:02 · 679 阅读 · 0 评论