JVM
文章平均质量分 80
AndysCat
这个作者很懒,什么都没留下…
展开
-
《JVM学习系列》一.Java运行时内存区域介绍.md
1.程序计数器程序计数器是一块小的内存空间,可以看做是当前线程所执行的字节码的行号指示器。每一个线程都有自己程序计数器。如果线程正在执行的是一个Java方法,程序计数器的值就是正在执行的虚拟机字节码指令的地址;如果线程正在执行的是Native方法,这个程序计数器的值为空(undefined)。此内存区域是虚拟机规范中没有规定任何OutOfMemoryError情况的区域。2.虚拟机栈虚拟机栈描述的是原创 2016-10-28 17:11:04 · 350 阅读 · 0 评论 -
《JVM学习系列》二.HotSpot虚拟机对象解密
0.背景上篇文章介绍了Java虚拟机的运行时的数据区之后,这篇继续探寻这些虚拟机的其他细节,比如对象是如何创建的、如何布局以及如何访问的。对于这样涉及细节的问题,必须吧讨论限定在具体的虚拟机和集中在某一个内存区域上才有意义。下面一常用的HotSpot虚拟机和常用的内存区域Java堆为例,探讨HotSport虚拟机在Java堆中对象分配、布局和访问的全过程。1.对象的创建虚拟机遇到一条new指令时,会原创 2016-10-31 19:57:19 · 363 阅读 · 0 评论 -
《JVM学习系列》三.HotSpot虚拟机对对象的回收
#0. GC要完成3件事:1. 哪些内存需要回收?2. 什么时候回收?3. 如何回收?Java内存的程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着入栈和出栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内就不需要过多考虑回收的问题,因为方法结束或原创 2016-11-01 15:03:27 · 358 阅读 · 0 评论 -
《JVM学习系列》四.垃圾收集算法及HotSpot的算法实现
0 说明本篇文章只是介绍几种算法的思想,实现细节不会过多的讨论。1.垃圾收集算法1.1标记-清除算法算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它的标记过程就是使用可达性算法进行标记的。主要缺点有两个:效率问题,标记和清除两个过程的效率都不高空间问题,标记清除之后会产生大量不连续的内存碎片1.2复制算法复制算法:将可用内存按照容量分为大小相原创 2016-11-02 19:03:58 · 263 阅读 · 0 评论 -
JVM内存模型——虚拟机栈详细讲解.md
0.JVM运行时数据模型Java 虚拟机的内存模型分为两部分:一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。1.程序计数器和本地方法栈程序计数器和程序计数器比较简单,放在一块讲。1.1 程序计数器是一块小的内存空间,线程私有的。可以看做是当前线程所执行的字节码的行号指示器。每一个线程都有自己程序计数器。如...原创 2018-12-17 17:40:53 · 2875 阅读 · 0 评论 -
JVM内存模型——堆及垃圾回收.md
本节简单梳理下JVM运行时堆上的内存模型,以及垃圾回收的的知识点。堆是JVM运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。非堆内存Java 虚拟机具有一个由所有线程共享的方法区。方法区属于非堆内存。它存储每个类结构,如运行时常数池、字段和方法数据,以及方法和构造方法的代码。它是在 Java 虚拟机...原创 2019-01-04 15:03:17 · 160 阅读 · 0 评论