在程序中如何避免java内存泄漏?具体一点。最好有个例子,谢谢
解决方案 »
- 帮忙分析下一个简单程序的执行过程?
- final关键字与java性能优化
- 怎么在一个键盘事件中调用鼠标事件在java的gui编程中
- 谁见过可嵌入JSP中能实现简单图形拖放的代码?十万火急,给点思路吧
- Eclipse插件系列操作说明手把手教你使用SQLExplorer、Implementors、Bytecode Outline、Hidden Heap Status、EasyExplorer
- io 流
- ★●○☆■△▲◆◆★●○☆■△▲◆◆★●○☆■△▲◆◆★●○☆■△▲◆◆寻人启示(送分找人啦)★●○☆■△▲◆◆★●○☆■△▲◆
- 请帮看一下关于RMI的错误,谢拉!!!!
- 如何将字符数组赋给字符串?
- 关于jbuilder工程问题
- java 中RadioButton的使用
- 一个问题
对于资源,java的垃圾收集就管不了了啊,这是程序员的问题,语言本身不能解决所有问题。
比较典型的是在使用jdbc的时候,声明Connection , Statement为null。
凡是具有显示的close或者dispose的类
用完都要显示的关闭来防止内存泄漏当然对于数据库操作,查询数据之类的量太大了,也会泄漏
还有其它的一些情况
网上有相关资料可查。
JVM 的GC不知道它何年何月才执行。
但JAVA又不赞同我们手动调用finalize()和system.gc();
比如程序中创建了一系列大对象,等处理完之后,这些大对象已经不用了,但还有一些无用的引用在指向它们,
垃圾收集器就会以为它们还在使用中,就无法回收,因此这块内存就一直在占用着,其实已经对程序没作用了。
如果这样的内存块越积越多,就会造成内存不够用,然后就会内存溢出;
Tomcat、jboss服务器出现的 OutOfMemory 就是这个原因。
FileInputStream fis = new FileInputStream("C:\\test.txt");
......
fis.close();
}catch(Exception ex){
......
}这种代码存在隐患:当调用 fis.close() 之前出现异常,则 fis.close() 将不会被调用当然,严格来讲,这不能叫“内存泄漏”
下面的代码则有可能产生内存泄漏:public class Global{
private java.util.ArrayList<Object> list = new java.util.ArrayList<Object>();
public void put(Object obj){
list.add(obj);
}
}上面的代码只把对象放到集合里,却并没有把对象从集合中清除。这样,放进集合中的对象永远不会被当作垃圾回收