随笔分类 -  JVM

摘要:JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存 阅读全文
posted @ 2019-08-11 10:07 家铭 阅读(145) 评论(0) 推荐(0)
摘要:JVM总结(1) 1、JVM组成: JVM由类加载器子系统、运行时数据区、执行引擎以及本地方法接口组成。 2、JVM运行原理: Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。 3.Java垃圾回收区域 Java垃圾回收只针对堆和方法区的内存。 阅读全文
posted @ 2019-08-10 16:02 家铭 阅读(300) 评论(0) 推荐(0)
摘要:主要讨论集中垃圾收集算法的思想及发展过程。 1、标记-清除法 最基础的收集算法是标记-清除法,算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,其标记过程在之前已经讲过。之所以说他是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进 阅读全文
posted @ 2019-04-25 17:43 家铭 阅读(165) 评论(0) 推荐(0)
摘要:Java虚拟机所管理的内存包括以下几个运行时的数据区域:方法区,堆,虚拟机栈,本地方法栈,程序计数器。下面对其进行介绍: 程序计数器 它是一块较小的内存空间,可以看做当前线程做执行的字节码的信号指示器,在虚拟机概念模型,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 阅读全文
posted @ 2019-03-09 16:44 家铭 阅读(108) 评论(0) 推荐(0)
摘要:Java虚拟机规范中规定不要求虚拟机在方法区实现垃圾收集,而且在方法区实现垃圾收集性价比确实很低。在堆中,尤其是新生代,一次垃圾收集可以回收75%-95%的空间,而永久代的垃圾回收效率远低于此。 永久代的垃圾收集主要回收两部分:废弃常量和无用的类。回收废弃常量与回收Java堆的对象非常相似。 以常量 阅读全文
posted @ 2019-03-09 12:08 家铭 阅读(231) 评论(0) 推荐(0)
摘要:即便是可达性分析中不可达的对象,也不代表该对象一定被回收,一个对象被“宣判死刑”需要经过两次标记,第一次是被可达性算法标记为不可用,然后进入第二次筛选,筛选条件是对象是否有必要执行finalize()方法,如果对象没有覆盖finalize()方法,或者finalize()已经被虚拟机调用过,则该对象 阅读全文
posted @ 2019-02-14 16:13 家铭 阅读(128) 评论(0) 推荐(0)
摘要:Java堆中存放着所有的对象实例,垃圾收集器在堆进行回收之前,需要判断对象是“存活”还是“死亡”(即不可能再被任何途径引用的对象)。 最常见的一种判断对象是否存活算法是引用计数算法, 给对象加一个引用计数器,每当一个地方引用它时,计数器就加1;引用失效时就减1;任何时刻计数器为0的对象就是不可再被使 阅读全文
posted @ 2019-02-14 15:05 家铭 阅读(237) 评论(0) 推荐(0)
摘要:第三章 垃圾收集器与内存分配策略 3.1 概述 通过第2章的介绍,我们知道Java内存运行时的各个区域,其中程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭。每一个栈帧中分配多少内存都是在类结构确定下来时就已知的,因此这几个区域的内存分配和垃圾回收都具有确定性。 而Java堆和方法区则 阅读全文
posted @ 2019-02-13 11:37 家铭 阅读(98) 评论(0) 推荐(0)