Java内存管理
1,垃圾收集和内存管理
GC即垃圾收集机制,是指JVM用于释放那些不再使用的对象所占的内存。
特点如下:1,垃圾收集的时间是未知的。2,java中提供了一个强行执行垃圾收集的方法-system.gc().
3,一般采用默认的垃圾收集器,实时性要求比较高的系统采用增量收集器。系统具有较高的配置,有比较多的闲置资源,则可以考虑使用并行标记/清除收集器。4,尽早释放无用对象的引用,通过设置null,暗示垃圾收集器来收集该对象。finalize相当于析构函数,他是垃圾回收器回收一个对象的时候第一个要调用的方法。
//对象回收前执行,自己编写垃圾回收反馈
protected void finalize() throws Throwable{
System.out.println(name+ "被回收");
}
java中内存管理就是对象的分配和释放的问题。程序员需要通过关键字new为每个对象申请空间(基本类型除外),所有的对象都在堆中分配。 对象的释放是由GC决定。
GC的工作原理可以通过有向图解释,可以将对象视为有向图的顶点,将应用关系视为图的有向边,有向边从引用者指向应用对象。每个线程对象可以作为一个图的起始顶点。
java的内存泄露就是存在一些被分配的对象,这些对象有下面两个特点,1,对象可达,即有向图中存在通路。2,对象无用,即程序以后不会再使用这些对象。
造成内存泄露的原因?
忘记释放先前分配的内存,就可能造成内存泄露。为了保证垃圾回收,编程人员通过将对象字段设置为NULL或者从集合(collection)中移除对象。注意:局部变量不需要设置null,会自动消除。
典型的内存泄露和原因
1,全局集合
JNDI数或者一个会话表中,周期性的运行某种清除任务,使用反向链接计数,然后集合负责统计集合中每个入口的反向链接的数目。