C#中的弱引用(WeakReference) 我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的。我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现。弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,
Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题。以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象,就交给GC来做吧!甚至有人说,如果在编程过程中频繁考虑内存问题,是一种退化,这些事情应该交给编译器,...
分类:
编程语言 时间:
2015-12-15 16:52:20
阅读次数:
370
1. 垃圾回收只与内存有关在Java中,我们new完对象之后,垃圾回收器负责回收无用的对象占据的内存资源。这与C++不同,在C++中,准许使用局部对象,回收对象时候,需要用到finalize()析构函数。C++的对象创建在堆栈中,而Java对象创建在堆中,所以我们创建完对象之后,Java的垃圾回收器...
分类:
编程语言 时间:
2015-10-14 00:05:12
阅读次数:
203
final, finally, finalize的区别? final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。sleep() 和 wait() 有什么区别...
分类:
编程语言 时间:
2015-08-26 10:45:38
阅读次数:
209
Java编程中,经常会使用到异常处理,而finally看似的是try/catch后对逻辑处理的完善,其实里面却存在很多隐晦的陷阱;final常见于变量修饰,那么你在内部类中也见过吧;finalize作为GC回收对象前的一道门,什么时候执行,执行效果又是怎样,有时看看又忘了。下面从经典的例子.......
分类:
其他好文 时间:
2015-07-29 17:23:25
阅读次数:
169
手动内存管理MRC首先介绍一下引用计数器:用来保存当前对象有几个东西在使用它(数字)引用计数器的作用:用来判断对象是否应该回收内存空间(如果对象不等于nil,当引用计数器为0,此时要回收对象的内存空间)引用计数器的操作:retain 使得引用计数器+1release 使的引用计数器-1retai.....
分类:
其他好文 时间:
2015-07-26 22:32:12
阅读次数:
121
第一,谈谈final, finally, finalize的区别。 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。finally是异常处理语句结构的一部分,表示总是执行。finalize是 Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,...
分类:
编程语言 时间:
2015-07-23 00:40:07
阅读次数:
228
我们在写程序的时候,大部分时候,会把类定义成为public类型的,那么任何类都可以随意的创建该类的对象。但是有时候,这种做法并没有任何意义,频繁的创建对象和回收对象造成内存损耗,所以就有了单例模式 一个类只能创建一个对象,则这个类被成为单例类,这种模式被成为单例模式 单例模式的原则是: ...
分类:
其他好文 时间:
2015-07-13 17:55:38
阅读次数:
84
1 手动内存管理基本概念 创建对象 1.分配内存空间,存储对象 2.初始化成员变量 3.反回对象的指针地址 //1.对象在完成创建的同时,内部会自动创建一个引用计数器,这个计数器,是系统用来判断是否回收对象的唯一依据,当我们的引用计数retainCount = 0的时候,系统会毫不犹豫回收当前对象 ...
分类:
其他好文 时间:
2015-06-09 16:27:51
阅读次数:
106
创建对象过程1.分配内存空间,存储对象2.初始化成员变量3.返回对象的指针地址对象在完成创建的时候,内部会自动创建一个引用计数器(retainCount)这是系统用来判断对象是否需要回收的唯一依据。当retainCount = 0 的时候,系统会自动将当前对象进行回收。[对象 release] re...
分类:
其他好文 时间:
2015-05-09 21:59:08
阅读次数:
126