问题标签 [finalize]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
999 浏览

c# - 在 .Net 中完成的成本

(1) 我已经阅读了很多关于 IDisposable 的问题,其中的答案建议不要使用 Finalize,除非你真的需要,因为涉及的处理时间。
我没有看到的是这笔费用是多少以及支付的频率。每毫秒?第二?小时、天等

(2) 另外,在我看来,当它并不总是知道是否可以处置对象时,Finalize 很方便。例如,框架字体类。控件无法处理它,因为它不知道字体是否被共享。字体通常是在设计时创建的,因此用户不会知道如何处理它,因此 finalize 会在没有任何引用时最终摆脱它。这是正确的印象吗?

0 投票
3 回答
319 浏览

.net - .NET FINALIZE 概念问题

不使用 finalize 比较 dispose 真的更好吗?是否在第一次解析中删除非托管资源?

什么是抑制 finalize ?

0 投票
2 回答
491 浏览

java - Java finalize 方法的函数声明是什么?

近 1 个月以来,我一直在寻找 finalize 的代码。你能帮我写代码吗?提前致谢。

0 投票
6 回答
5207 浏览

java - Java面试题:finalize()方法

在一次采访中,我得到了以下短语:

对象的 finalize() 方法的调用是对象被垃圾回收之前发生的最后一件事。

我不得不回答:

  • 真的
  • 错误的

我选择True了,但它是错误的。你能解释一下为什么吗?

0 投票
2 回答
6911 浏览

java - Cipher.doFinal 输出大小

我正在使用 javax.crypto 在 java 中进行 AES CBC 解密。我正在使用以下 Cipher 类方法:

  • public final void init (int opmode, Key key, AlgorithmParameters params)初始化方法,
  • final int update(byte[] input, int inputOffset, int inputLen, byte[] output)解密数据的方法,
  • 最后我调用该final int doFinal(byte[] output, int outputOffset)方法完成解密。

我的查询是这样的:我可以假设doFinal调用返回给我的数据大小总是小于或等于 AES 块大小吗?该文档将 doFinal 方法描述为:

“完成多部分转换(加密或解密)。处理可能在以前的更新调用中缓冲的任何字节。最终转换后的字节存储在输出缓冲区中。”</p>

但它没有说输出缓冲区最多包含一个数据块。虽然我知道这是 AES API 的一般行为,这是我的代码到目前为止所表现出的行为,但是这个假设会一直成立吗?

0 投票
3 回答
1942 浏览

c# - 我需要在我的对象中实现 dispose 或 finalize 吗?

太久了,我让垃圾收集器发挥它的魔力,从我自己身上卸下所有责任。

可悲的是它从来没有变成一个问题......所以我从来没有考虑过这个问题。

现在,当我想到它时,我并不真正了解“处置”功能的真正作用以及应该如何以及何时实现它。

最后确定的相同问题...

最后一个问题...我有一个类图片操作:当我需要保存/调整大小/更改格式时...我启动该类的一个新实例,使用它的对象并且...让垃圾收集杀死该实例

0 投票
2 回答
28484 浏览

.net - .net 中的 finalize 和 dispose 有什么区别?

可能的重复:
完成与处置

你好,

最近,我在接受有关 finalize 和 dispose 的采访时被问到。何时使用它们中的每一个以及垃圾收集器与它们的关系如何。请分享链接以启发更多关于该主题的信息。

欢迎分享...

提前致谢。

0 投票
6 回答
5255 浏览

c# - 为什么传统的 Dispose 模式会抑制 finalize?

假设这是传统的 Dispose 模式(取自 devx,但在许多网站上都可以看到)

我不明白我们为什么要打电话GC.SupressFinalize(this)。这需要我编写自己的托管资源处置,包括将我的引用归零?我有点失落,我必须承认。有人可以阐明这种模式吗?

理想情况下,我只想处理我的非托管资源,让 GC 自己进行托管收集。

实际上,我什至不知道我们为什么要指定终结器。无论如何,编码人员应该自己调用 dispose ,不是吗?如果这只是一个后备机制,我会删除它。

0 投票
1 回答
709 浏览

android - 应用崩溃时如何释放Android资源

我正在使用 Android AudioRecord 应用程序。如果我没有release()在脚本末尾调用 AudioRecord 对象上的方法,它将无法正确运行,直到我重新启动手机。

在处理这个项目时,这成为一个主要的麻烦,因为如果应用程序崩溃(有时在测试时发生并且存在意外的缓冲区溢出等),那么我每次都必须重新启动手机。

我有在finalize()我的 AudioListener 类的方法中释放缓冲区的方法,我也将它们onStop()称为主 Activity。

当应用程序冻结或崩溃时,这些似乎都不起作用。有没有办法将释放操作附加到错误处理程序或确保应用程序即使在崩溃后也能执行某些代码以正确释放资源的一般方法。

谢谢你的帮助。

0 投票
1 回答
226 浏览

ada - 如何引发对 Finalize 的多次调用?

在最近的AdaCore Gem中有一个声明

Finalize 的实现稍微复杂一些:Ada 参考手册指出 Finalize 过程应该始终是幂等的。Ada 编译器可以自由地对同一个对象多次调用 Finalize,尤其是在发生异常时。

我需要测试一个私人控制的类型,

我可以更改源以使类型明显受控

然后打电话Finalize (My_T);(甚至My_T.Finalize?);但是有什么方法可以在不更改被测软件的情况下导致多个最终确定?