jvm
文章平均质量分 91
独一无二的VV
冲就完事了
展开
-
深入理解Java虚拟机4(几种垃圾收集器的原理)
垃圾收集器垃圾收集算法是内存回收的方法论垃圾收集器就是内存回收的具体实现Serial收集器Serial收集器是最基本、发展历史最悠久的收集器,曾经是虚拟机新生代收集的唯一选择这个收集器是一个单线程收集器,但它的单线程的意义并不仅仅说明它只会使用一个CPU或一条收集线程区完成垃圾收集工作,更重要的是在于它进行垃圾收集时,必须暂停其它所有工作线程,直到它收集结束使用复制算法“Stop The World”这项工作实际上是由虚拟机在后台自动发起和自动完成的。在用户不可见的情况把用户正常工作的线程原创 2021-12-10 20:13:58 · 941 阅读 · 0 评论 -
深入理解Java虚拟机3(垃圾收集算法,HotSpot算法的实现)
垃圾收集算法分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generation Collection)的理论进行设计,分代收集名为理论,实际是一套符合大多数程序运行实际情况的经验法则,它建立在两个分代假说上:弱分代假说:绝大多数对象都是朝生夕灭的强分代假说:熬过越多次垃圾收集过程的对象就月难以消亡这两个分代假说共同奠定了多款常用垃圾收集器的一致的设计原则:收集器应该将Java堆划分出不同的区域,然后将回收对象依据其年龄(年龄即对象熬过垃圾收集过程的次数)分配到不同的区域之原创 2021-12-10 20:09:09 · 780 阅读 · 0 评论 -
深入理解Java虚拟机2(如何判断对象已死?)
对象已死吗在堆里存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还”存活“着,哪些已经”死去“(即不可能再被任何途径使用的对象)引用计数算法很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。客观说,引用计数算法的实现很简单,判定效率也很高,在大部分情况下都是一个不错的算法。但是至少主流的Java虚拟机里面没有选原创 2021-12-10 20:06:00 · 343 阅读 · 0 评论 -
深入理解Java虚拟机1(Java内存区域与内存溢出异常)
Java内存区域与内存溢出异常运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范((JavaSE 7版)》的规定,Java 虚拟机所管理的内存将会包括以下几个运行时数据区域,如图2-1所示。程序计数器程序计数器是一块较小的内存空间它可以看作是当前线程所执行的字节码的行号指示器。在虚原创 2021-12-07 09:53:39 · 722 阅读 · 0 评论