JVM学习笔记
java虚拟机学习笔记
键盘上的指甲油
这个作者很懒,什么都没留下…
展开
-
jvm学习笔记(一) java内存区域的划分
Java虚拟机在运行java程序的过程中会将它所管理的内存划分为若干个不同的区域,他们有各自不同的用途,创建以及销毁时间,如下图为java虚拟机运行时数据区:1.程序计数器:他是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个java方法,这个计数器记录的就是正在执行的虚拟机字节码的指令地址。如果是native方法,则这个计数器的值为空。2.j...原创 2018-11-26 15:00:55 · 126 阅读 · 0 评论 -
jvm学习笔记(二)内存溢出异常
在java虚拟机规范中,除了程序计数器之外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM)异常的可能。1.在java虚拟机栈和本地方法栈中,如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。如果虚拟机栈可以动态扩展,在扩展时无法申请到足够的内存则会抛出OutOfMemoryError异常。2.Java堆在虚拟机中可...原创 2018-11-28 16:14:09 · 196 阅读 · 0 评论 -
jvm学习笔记(三)如何确定对象是否可回收
垃圾收集(Garbage Collection,GC)回收的主要是java堆和方法区这部分内存,而程序计数器,虚拟机栈和本地方法栈的生命周期与线程一致,并且在编译器基本上就能确定分配多少内存,所以这部分的内存分配和回收就不需要哦过多考虑。而java堆和方法区只有处于程序的运行期间才能知道创建哪些对象,这部分的内存分配和回收都是动态的,所以我们所说的垃圾回收也主要指这部分内存。而...原创 2018-12-05 19:17:45 · 130 阅读 · 0 评论 -
jvm学习笔记(四)垃圾收集算法
常见的垃圾收集算法有以下几种:1.标记-清除算法(Mark-Sweep):这种算法的思想就和他的名字一样分为 “标记” 和 “清除” 两个阶段,首先标记出所有需要回收的对象,标记完成后统一回收所有被标记的对象。这种算法主要的不足之处有两个:一个是效率问题,标记和清除这两个过程的效率都不是很好,另一个就是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致在分配较大对象时,无...原创 2018-12-13 16:24:58 · 109 阅读 · 0 评论 -
jvm学习笔记(五)内存分配与回收策略
目前常用的虚拟机中,在大多数情况下,对象优先在新生代Eden区中分配,等Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC。新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,回收速度也比较快。老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Full GC,经常会...原创 2019-03-30 14:44:15 · 97 阅读 · 0 评论 -
JVM学习笔记(六)垃圾收集器
垃圾收集算法是内存回收的方法,而垃圾收集器是内存回收的具体实现。不同的虚拟机所用的垃圾收集器都不同,下图是Hotspot虚拟机在JDK1.7版本之后包含的收集器:七个收集器所处的位置代表了他们是属于新生代收集器还是老年代收集器,两个收集器的连线代表着他们可以搭配使用。1.Serial 收集器:他是最基本,发展历史最久的一个收集器,在JDK1.3.1之前是虚拟机新生代收集的唯一选择,看名...原创 2019-05-13 19:41:36 · 83 阅读 · 0 评论