垃圾回收 垃圾回收主要思考三件事情: 哪种内存需要回收? 什么时候回收? 怎么回收? 第一步、判断对象是否存活 引用计数法 这是一种非常简单易理解的回收算法。每当有一个地方引用一个对象的时候则在引用计数器上 +1,当失效的时候就 -1,无论什么时候计数器为 0 的时候则认为该对象死亡可以回收了。 这 ...
分类:
编程语言 时间:
2018-08-25 15:01:47
阅读次数:
173
程序计数器、虚拟机栈、本地方法栈随线程而生、随线程而灭 堆和方法区 一个接口的多个实现类所需的内存不一样,一个方法的多个执行分支所需的内存不一样,在程序执行过程中动态地分配和回收内存 (1)引用计数法 引用计数器,有一个地方引用,计数器的值加一 很难解决对象之间循环引用的问题 (2)可达性分析 GC ...
分类:
其他好文 时间:
2018-08-22 11:09:12
阅读次数:
162
垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。 垃圾回收其实做了两件事:1、发现无用的对象;2、回收无用对象占用的内存空间。 垃圾回收算法 1、应用计数法 对象中添加一个引用计数器,每当一个 ...
分类:
编程语言 时间:
2018-08-14 21:11:26
阅读次数:
157
一、判断对象是否存活 1、引用计数算法 给对象添加一个引用计数器,每当一个地方引用了该对象,计数器加1,;当引用失效,计数器减1.当计数器为0表示该对象已死,可回收。但是无法解决两个对象互相引用的情况 2、可达性分析算法 通过一系列称为的GC Roots对象为起点,从这些节点往下搜索,搜索走过的路径 ...
分类:
其他好文 时间:
2018-07-29 00:13:30
阅读次数:
176
一、判断对象是否存活 1、引用计数算法 给对象添加一个引用计数器,每当一个地方引用了该对象,计数器加1,;当引用失效,计数器减1.当计数器为0表示该对象已死,可回收。但是无法解决两个对象互相引用的情况 2、可达性分析算法 通过一系列称为的GC Roots对象为起点,从这些节点往下搜索,搜索走过的路径 ...
分类:
其他好文 时间:
2018-07-29 00:06:08
阅读次数:
217
[TOC] 垃圾收集器与内存分配策略 一、对象存活判断 1.1 对象存活判断算法 引用计数法 : 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器值减1.任何时刻计数器值为0的对象就是不可能再被使用的。 该算法实现简单, 但存在相互引用的问题; (主流的Java ...
分类:
其他好文 时间:
2018-07-24 22:49:22
阅读次数:
237
在jvm中如何判断对象是生存还是死亡? 如何判断对象已死? 引用计数法: 给对象添加一个引用计数器,每当有地方引用时则加一,失效时减一,任何时刻计数器为零的对象是不可能再被使用的, 优点:引用计数法的实现简单判定效率高 缺点:难以解决对象间的相互循环引用问题 可达性分析算法: 通过一系列称为‘GC ...
分类:
其他好文 时间:
2018-07-14 20:03:02
阅读次数:
163
判断对象是否存活的方法: 1、引用计数算法:给一个对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1,引用失效时,计数器减1,当引用数量为0时,任务对象已经死了 缺点:当对象之间存在相互循环引用时,引用计数算法无法通知GC收集器回收 2、可达性分析算法:判断一个对象到GC ROOTS是否 ...
分类:
其他好文 时间:
2018-07-02 21:33:43
阅读次数:
211
只有2种成员 值成员; 指针成员; 依实现可分为raw pointer / shared_ptr; 现在,仅考虑第③种:资源对象共享 角度来考虑拷贝控制 类的两种语义:值语义、似指针 编译器提供的default版本的copy constructor/ copy assignment的语义: 1. 拷 ...
分类:
其他好文 时间:
2018-06-29 10:54:24
阅读次数:
172
以往的Delphi版本,不支持接口的Weak,和UnSafe的引用,支持对象的Weak, UnSafe,而且仅在Android和Ios平台上支持。 现在Delphi XE10.1 Berlin终于增加了对接口的Weak, UnSafe的支持。 1.Weak Weak引用,不影响引用计数器,但是如果对 ...