随笔分类 - JVM
java 虚拟机
摘要:对象的内存分配,主要是在java堆上分配(有可能经过JIT编译后被拆为标量类型并间接地在栈上分配),如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也是直接分配到老年代,分配规则不是固定的,细节还是取决于垃圾收集器的组合,以及虚拟机和内存相关参数的配置。 JVM 堆中分为 新生代
阅读全文
摘要:在Java中,判断一个对象是否 "存活" ,都和引用有关,当一个对象没有任何的引用指向它,我们可以认为这个对象可以被GC了。 引用如何定义?Object obj = new Object()创建一个对象 ,我们知道会在 stack 和 heap 上分别分配一块内存,heap 分配的内存存储Objec
阅读全文
摘要:垃圾收集算法是垃圾回收的理论,那么垃圾收集器是垃圾回收的具体实现。不同的版本、不同厂商的虚拟机所提供的垃圾收集器可能差别很大,一般的话根据自己的应用特点和要求组合出不同年代所使用的垃圾收集器。 Serial 收集器 ParNew 收集器 Parallel Scavenge收集器 Serial Old
阅读全文
摘要:找到了 "垃圾" 对象,如何标记 "垃圾" 对象? 标记-清除算法 先标记所有需要回收的对象,标记完成后统一回收被标记了的对象。(最基础的算法,其它算法在这个算法基础上改进的) 缺点:标记和清除的效率不高,标记和清除后会产生大量的内存碎片(空间问题) 复制算法 将内存按容量划分两块大小相等的内存块,
阅读全文
摘要:语句 Object obj = new Object() Object obj 中obj是一个对象引用,这部分数据会反映到java虚拟机栈中的本地变量表(局部变量表)中,作为一个reference数据类型出现。 new Object()语义反映到java堆中,形成一块存储Object类型所有实例数据
阅读全文
摘要:运行时数据区域 java虚拟机在执行java程序的过程中会把它管理的内存分为不同的数据区域,不同的数据区域功能不同,以及它的创建和销毁时间不同,有的区域随着虚拟机的启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁。 程序计数器:是一块小的内存,可以认为是当前线程所执行的字节码的行号指示器。(
阅读全文

浙公网安备 33010602011771号