java finalize方法的使用
我的系统内存泄漏,我试图通过尽快释放内存来优化它java finalize方法的使用,java,garbage-collection,Java,Garbage Collection,我的系统内存泄漏,我试图通过尽快释放内存来优化它 这是finalize方法的一个好用法吗 我在哪里捕捉“可丢弃”的物体 } Finalize不是为内存泄漏之类的问题进行代码优化的地方 事实上,经验法则是“永远不要对程序逻辑/成功依赖的任何事情使用finalize”。finalize不是为内存泄漏等进行代码优化的地方 事实上,经验法则是“永远不要对程序逻辑/成功依赖的任何东西使用finalize”。这是finalize方法的一个好用法吗? 否。因为您正在使对象符合finalize()中的垃圾收集条
Finalize不是为内存泄漏之类的问题进行代码优化的地方
事实上,经验法则是“永远不要对程序逻辑/成功依赖的任何事情使用finalize”。finalize不是为内存泄漏等进行代码优化的地方
事实上,经验法则是“永远不要对程序逻辑/成功依赖的任何东西使用finalize”。
这是finalize方法的一个好用法吗?
否。因为您正在使对象符合finalize()中的垃圾收集条件。
但是根据 当垃圾回收确定不再有对对象的引用时,垃圾回收器对该对象调用finalize()方法 因此,您可以使用
finally
块来使对象符合垃圾收集的条件。这些都是值得一读的问题
1.
2.
这是finalize方法的一个很好的用法吗?
否。因为您正在使对象符合finalize()中的垃圾收集条件。
但是根据 当垃圾回收确定不再有对对象的引用时,垃圾回收器对该对象调用finalize()方法 因此,您可以使用
finally
块来使对象符合垃圾收集的条件。这些都是值得一读的问题
1.
2.否。finalize()方法不执行默认情况下不会发生的任何相关操作。否。finalize()方法不执行默认情况下不会发生的任何相关操作。使用finalize()方法实际上会减慢内存的释放。当您使用finalize时,必须将对象添加到队列中,因此在另一个线程中调用该对象之前不会清理该对象,这意味着将其实际清理延迟至少一个GC周期 如果不使用finalize(),它可以在一个周期内清除,这包括对象引用的任何内容 减少内存消耗的最佳方法是使用内存分析器。我将通过创建更少的垃圾来减少GC上的负载,并通过查看堆的分解(特别是对象的分配位置)来减少保留的内存量 如果您没有商用探查器,我建议您在Java 7 update 40中获得Java任务控制的支持。使用finalize()方法实际上会减慢内存的释放。当您使用finalize时,必须将对象添加到队列中,因此在另一个线程中调用该对象之前不会清理该对象,这意味着将其实际清理延迟至少一个GC周期 如果不使用finalize(),它可以在一个周期内清除,这包括对象引用的任何内容 减少内存消耗的最佳方法是使用内存分析器。我将通过创建更少的垃圾来减少GC上的负载,并通过查看堆的分解(特别是对象的分配位置)来减少保留的内存量 如果您没有商业分析器,我建议您在Java7Update40中支持Java任务控制
可能重复No,像这样编写
finalize()
方法不是一个好主意。与其这样做,不如使用探查器找出导致内存泄漏的原因,并修复问题。与其尝试优化,不如修复内存泄漏!可能重复No,像这样编写finalize()
方法不是一个好主意。与其这样做,不如使用探查器找出导致内存泄漏的原因,并修复问题。与其尝试优化,不如修复内存泄漏!但它会使清理对象的速度变得更差。但它会使清理对象的速度变得更差。finalize()
的精确描述!!精确描述finalize()
!!
public class OrderSendBulkHandler extends PandaSoapHandler {
// <login,Data>
private HashMap<String,OrderSendBulkData> followersData = new HashMap<String,OrderSendBulkData>();
// <login,error_code>
private HashMap<String,BulkDataResponse> positionResponses = new HashMap<String,BulkDataResponse>();
private Position position;
private Float guruBalance;
private float partialRatio = -1;
private boolean ignorePosition = false;
@Override
protected void finalize() throws Throwable {
try {
followersData.clear();
followersData = null;
positionResponses.clear();
positionResponses = null;
position = null;
guruBalance = null;
}
catch (Exception e) {
e.printStackTrace();
}
super.finalize();
// more code of the class here ...
// .....