finalize

    2热度

    1回答

    我知道每当垃圾收集器收集一个类实例时,都会调用finalize()。但是,当通过队列将一个类的实例传递给另一个线程时,我有点困惑。 比方说,这是线程1的骨架: for(i=0; i<1000; i++) { Packet pkt = new Packet(); // instance of class pkt.id = i; thread2.queue.put(pkt

    0热度

    3回答

    我想在一个对象上实现一个类似于Java语言中保证的finalize()的行为。我想要在发生垃圾回收之前执行一些语句。请注意,finally块在这里并没有用,因为finally在try块后面运行,这不是我的要求。基本上我想在它从JVM的堆中卸载之前序列化对象。请指教。

    2热度

    1回答

    Long Java/Android/JNI故事短...我有两个类,一个是我创建的名为Packet的对象/类,另一个是我编写的低级C代码的JNI接口。在一个类中,我解析传入的数据包并将它们存储在ArrayList中。当它们被“解析”时,函数Packet.dissect()被调用,它使用JNI调用较低级别的C代码。这个C代码的malloc()的一些内存,并返回内存指针,将其存储在包对象的私有成员的Ja

    1热度

    2回答

    所以我明白,在使用block语句结束时,会调用dispose方法。 如果我使用一个'using(var a = new Stream()) { a.SomethingThrowsAnException() }' 是否流刚才还经过他处理方法会发生什么? 我写了一个实现IDisposable的类,它是关键任务,我不会丢失内存中的内容,所以我计划在发生灾难性事件时序列化数据,即我有一个类似于我使用的对象

    1热度

    1回答

    我正在使用Silverlight应用程序,用户可以在其中创建,编辑和删除对象。他们所做的更改将放置在每4分钟处理一次的队列中。当它被处理时,更新通过异步web方法调用发送,以便一次保存在sql数据库中。第一次更新完成时,下一次开始。 当用户进行更改,然后在4分钟计时器过期之前退出浏览器应用程序时,出现问题。目前变化正在消失。 我建立在这之前做过这件事的人已经完成了,并探索了Dispose和Fina

    2热度

    1回答

    是否有强制在单元测试期间创建的所有对象最终确定的方法?我一直遇到的问题是,当进程本身(而不是AppDomain!)终止时,由于丢失GCHandle实例而导致的任何泄漏似乎都已最终确定,这是在程序集中的所有测试都已运行(并且可能“通过”)之后, 。 我最好的,但还不够,尝试在C#: class Foo : IDisposable { ~Foo() { Dispose(); }

    1热度

    3回答

    我正在尝试编写一个Java单元测试,用于测试对终结器调用对象的影响。 为了确保终结器被调用,我使用了一个WeakReference方法,我在其他地方看到了stackoverflow。 我的问题是,在本次测试TestFinalizer的finalize方法不会被调用即使WeakReference的只是一个迭代后出现空: public class FinalizerTest { priva

    2热度

    2回答

    我最近遇到了一个与在Finalize方法重载中运行的代码有关的问题。 我大部分都知道与内存管理/性能有关的问题,但我对是否有任何指导方针“哪些代码应该/不应该进入Finalize方法”感到兴趣? 例如: 不要从Finalize方法内抛出异常。 代码应该快速执行。 不要引发事件(?) 等... 在我的情况的行为被视为因事件被上升导致一些例外。 所以我的问题是 - 关于最终化方法,我必须遵循哪些准则(

    0热度

    2回答

    部署时,当最后确定叫我创建了一个简单的Java类,如下所示: 我通过内容作为字节数组和文件名和类的地方创建一个临时文件。 import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; public class TempFile { private byte[] cont

    5热度

    4回答

    我有一个带有一个finalize()方法的伸缩构造函数的超类。为了防止子类忘记调用super.finalize,我写了一个终结者监护人(EJ Item 7)。 public class Super { public Super() {} { Object finalizerGuardian = new Object() { @Override