懵懂的菜鸟

Stay hungry,Stay foolish.

导航

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数或者一个会话表中,周期性的运行某种清除任务,使用反向链接计数,然后集合负责统计集合中每个入口的反向链接的数目。

 

posted on 2017-10-20 23:15  懵懂的菜鸟  阅读(163)  评论(0编辑  收藏  举报