![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
WLNSSSSSS
这个作者很懒,什么都没留下…
展开
-
Java虚拟机(二)-垃圾收集器与内存分配策略
1.概述垃圾收集器,大部分人都会觉得这项技术当做Java语言的伴生产物。但是事实上GC的历史比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。GC主要需要完成下面三件事情:1.哪些内存需要回收?2.什么时候回收?3.如何回收?当前似乎垃圾回收技术已经十分成熟了,那我们还需要学习吗?答案是肯定的,当需要排除各种内存溢出,内存泄露问题时,当垃圾收集成为系...原创 2018-03-07 10:14:49 · 141 阅读 · 0 评论 -
Java虚拟机(一)-Java内存区域详解(转载)
一 jvm运行时数据区有哪些我们先来看一张图 JVM运行时数据区分类 1. JVM栈 (Java Virtual Machine Stacks) 2. 堆内存 (Heap Memory) 3. 方法区 (Method Area) 4. 本地方法栈 (Native Method Stacks) 5. 程序计数器 (Program Counter (PC) Register)二 详解数据区2.1 JV...转载 2018-03-07 11:09:17 · 124 阅读 · 0 评论 -
Java虚拟机(三)-垃圾收集算法
前面讲了如何定位要回收的对象,那问题来了,怎么回收对象也是一个问题。1.标记-清除算法这是最基础的收集算法,这就和他的名字,分为“标记”和“清除”两个阶段;首先标记出所有需要回收的对象,在标记完成后统一进行回收,他是最基础的算法,后续的算法都会在这种思维上进行优化改进。他的不足有两个,一个是效率问题,标记和清除效率都不高,第二个是空间问题,标记清除之后会残生大量不连续的内存碎片,空间碎片太多可能会...原创 2018-03-07 12:15:16 · 126 阅读 · 0 评论 -
Java虚拟机(四)-HotSpot的算法实现
前面介绍了对象存活判定算法和垃圾收集算法,而在HotSpot虚拟机上实现这些算法时,必须对算法的执行效率有严格的考量,才能保证高效运行。1.枚举根节点从可达分析中从GC Roots节点找引用链这个操作为例,可作为GC Roots的节点主要在全局性引用于执行上下文,现在很多应用仅仅方法区就有数百M,如果要逐个检查必定会消耗很多时间。另外,可达性分析对执行时间的敏感还体现在GC停顿上,这个分析工作必须...原创 2018-03-08 09:40:47 · 167 阅读 · 0 评论 -
java虚拟机(一) --Java内存区域与内存溢出异常(1)
一、概述对于c和c++开发来说,担负着每一个对象生命开始到终结的维护负责。但是对于Java开发者而言,则不需要,因为这一块由Java虚拟机负责,但是不了解Java虚拟机,排错将会成为一件很痛苦的事情二、运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用...原创 2018-03-05 08:46:08 · 174 阅读 · 0 评论