深入理解JVM虚拟机
文章平均质量分 91
本专栏是在学习周志明老师第三版《深入理解java虚拟机》一书时,进行整理的笔记以及一些感悟,具体内容请阅读原著。
啥也不会的研究牲
这个作者很懒,什么都没留下…
展开
-
第三章:垃圾收集器与内存分配策略(一)
3.1 概述 垃圾收集的历史要比Java久远,世界上第一个使用内存动态分配和垃圾收集技术的语言是1960年诞生于麻省理工学院的Lisp语言。当Lisp语言还处于胚胎时期时,其作者就已经思考过垃圾收集需要完成的三件事情: 哪些内存需要收集 什么时候收集 如何收集 当经过半个世纪的发展,内存的动态分配和垃圾收集技术已经相当成熟了,那我们为什么还要去学习这一部分知识呢?因为当需要排查各种内存溢出,内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”的技术实施必要的监控和调节。原创 2021-01-28 19:18:15 · 103 阅读 · 0 评论 -
第二章:Java内存区域与内存溢出异常(三)
2.4 实战:OutOfMemoryError异常 2.4.1 虚拟机启动参数设置 在下面的代码实验中,虚拟机参数的设置对于实验的结果具有直接的影响,那么设置虚拟机参数可以直接在Java命令之后书写就可以了,也可以在开发工具中设置,《深入理解Java虚拟机》中,使用的是Eclipse开发工具,可以在Debug/Run页签中设置,博主使用的是IDEA,所以下面介绍一下在IDEA中设置的方法和步骤。 1、选择Help ->Edit Custom VM Options 2、就可以看到打开虚拟机参数设置的文原创 2021-01-25 20:11:38 · 125 阅读 · 0 评论 -
第二章:Java内存区域与内存溢出异常(二)
2.3 HotSpot虚拟机对象探秘 2.3.1 对象创建 对象创建步骤: 当虚拟机遇到new指令时,首先检查这个指令的参数是否能够在常量池中定位到一个类的符号引用,并且检查这个符号引用的代表类是否已经被加载、解析和初始化过。如果没有,那么就进行相应的类加载过程 在类加载通过之后,接下来虚拟机对新生的对象分配内存空间。 内存分配完成之后,虚拟机必须将分配的内存空间都初始化为零值,如果使用了TLAB的话,这一项工作也可以提前到TLAB分配时顺便进行。 之后,Java虚拟机将还要对对象进行必要的设置 自此,从原创 2021-01-24 22:22:22 · 98 阅读 · 0 评论 -
第二章:Java内存区域与内存溢出异常(一)
2.1 概述 对于从事C、C++程序开发的开发人员来说,在内存管理方面,他们拥有最高的权力,但是从事最基础的工作——即拥有的每一个对象的“所有权”,又负责着每一个对象声明从开始到最后的维护工作。 对于Java程序员来说,在虚拟机自动内存管理机制之下,不再需要手动的为每一个对象分配内存,去写配对的delete/free代码,并且不容易出现内存泄漏和内存溢出的问题。但也正因为java程序员将内存管理的权利交给了虚拟机,那一旦内存出现了泄露和溢出方面的问题,那么在不了解虚拟机怎么使用内存的情况之下,去排查错误,修原创 2021-01-23 22:34:42 · 121 阅读 · 0 评论