![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
CodeLikeWind
努力不会徒劳,伟大并非凑巧
展开
-
【Java虚拟机】——Java内存区域
运行时数据区 一、Java内存区域图 由图可知,Java内存区域大致被分为两个,一个是线程共享内存区,一个是线程私有内存区。 线程私有内存区包括:程序计数器,本地方法栈,虚拟机栈 线程共享内存区包括:Java堆和方法区。 那么,为什么要区分线程私有和线程共享呢?因为生命周期不同首先我们熟悉一下一个一般性的 Java 程序的工作过程。一个 Java 源程序文件,会被编译为字节码文件(以...原创 2018-08-02 11:00:18 · 198 阅读 · 0 评论 -
【Java虚拟机】——垃圾回收与内存分配策略(一)
一、那些内存需要回收? 1.判断对象是否已“死” (1)引用计数法 引用计数值+1,引用失效计数值-1.为0则可以回收 (2)可达性分析法 对象到达GC-Root根节点,则不回收。否则回收 通过一系列名为”GCRoots”的对象作为起始点,从这个节点向下搜索,搜索走过的路径称为ReferenceChain,当一个对象到GCRoots没有任何ReferenceChain相连时,(图论:这个...原创 2018-08-02 16:27:28 · 188 阅读 · 0 评论 -
【Java虚拟机】——垃圾回收与内存分配策略(二)
如何回收垃圾? 一、垃圾收集算法 1.标记-清除算法 首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 由图可知,该算法最大的缺点就是造成内存碎片化严重,后续可能发生大对象找不到存储空间。 2.复制算法 将内存空间分成大小相等的两块,每次只使用其中的一块,当这一块内存快要使用完了,就将还存活着的对象复制到另一块,然后清理已经使用的这块内存。 这种方法的虽然...原创 2018-08-03 11:22:44 · 214 阅读 · 0 评论 -
【Java虚拟机】——垃圾回收与内存分配策略(三)
什么时候回收垃圾? 首先笔者在其他博客找到两张图 第一张显示了分代后的内存空间图 一个对象实例化时 先去看伊甸园有没有足够的空间 如果有 不进行垃圾回收 ,对象直接在伊甸园存储. 如果伊甸园内存已满,会进行一次minor gc 然后再进行判断伊甸园中的内存是否足够 如果不足 则去看存活区的内存是否足够. 如果内存足够,把伊甸园部分活跃对象保存在存活区,然后把对象保存在伊甸园. 如果内存不...原创 2018-08-03 12:31:35 · 362 阅读 · 0 评论