finalize相关内容

在 Java 中如何将对象标记为 finalized(以便第二次不会调用 finalize 方法)?

主要问题在主题中,但让我展示一下我对 Java 中完成过程的看法,以便我可以问你更多问题. gc 通过标记所有活动对象开始垃圾收集.当所有可达对象都被标记为“活动"时.所有其他对象都无法访问.下一步是检查每个无法到达的对象,并确定它是否可以立即被清扫,或者应该首先完成.如果对象的 finalize 方法有一个主体,那么 gc 会考虑下一个方法,那么这个对象是可终结的并且应该被终结;如果对象的 ..
发布时间:2022-01-16 10:19:57 Java开发

如何在java中销毁一个对象?

我在一次采访中遇到了这个问题,有以下选择: 如何在java中销毁一个对象? 一个.System.gc();湾.Runtime.getRuntime.gc();C.对象.删除();d.对象.finalize();e.Java 自己执行 gc,无需手动执行. 答案应该是e? 如果没有 e 怎么办?然后 ?显然 c 不是答案.a 和 b 将为整个应用程序执行 gc(问题需要一个对象).我 ..
发布时间:2022-01-16 10:15:21 Java开发

具有空队列的 PhantomReference

Java允许写: new PhantomReference(new Object(), null) 这种情况下new Object()会被收集吗? 据我了解,幻像引用是 finalize() 方法用法的替代方法. 在队列中出现引用后,我需要做一些额外的操作,然后运行 ​​clear() java 文档保留: 可以使用空队列创建幻像引用,但是这样的引用是完全没用的:它的 ..

如何确保始终调用 finalize()(Java 练习中的思考)

我正在慢慢研究 Bruce Eckel 的 Thinking in Java 第 4 版,以下问题让我很困惑: 使用 finalize( ) 方法创建一个打印消息的类.在 main( ) 中,创建你的类的一个对象.修改前面的练习,以便始终调用您的 finalize(). 这是我写的代码: 公共类马{布尔不稳定;马(布尔输入){不稳定=在;}公共无效最终确定(){if (!inStab ..
发布时间:2022-01-16 10:03:50 Java开发

如果我们覆盖 finalize 方法,为什么可以增加分配阶段?

我听说在 Joshua Bloch 写的书中,如果我们重写 finalize 方法,分配和内存收集可能会增加到 430 次. 对我来说很明显,内存收集可能会更慢,因为 gc 需要额外的迭代来释放内存. 但是为什么分配阶段可以增加呢? 解决方案 我已经搜索了原文: 在我的机器上,创建和销毁一个简单对象的时间大约是5.6 纳秒.添加终结器会将时间增加到 2,400 ns.换句 ..

可终结对象如何至少需要 2 个垃圾回收周期才能被回收?

我正在阅读 这篇 文章,我可以' 不太了解可终结对象(覆盖 finalize 方法的对象)如何至少需要 2 个 GC 周期才能被回收. 至少需要两个垃圾回收周期(在最佳情况下)才能回收可终结对象. 谁能详细解释一下一个可终结的对象怎么可能需要一个以上的 GC 周期来回收? 我的逻辑论点是,当我们覆盖 finalize 方法时,运行时将不得不向垃圾收集器注册这个对象(以便 GC 可 ..
发布时间:2022-01-16 09:50:22 Java开发

Java和手动执行finalize

如果我从我的程序代码中对一个对象调用 finalize(),当垃圾收集器处理这个对象时,JVM 是否仍会再次运行该方法? 这是一个大概的例子: MyObject m = new MyObject();m.finalize();米=空;系统.gc() 显式调用 finalize() 是否会使 JVM 的垃圾收集器不在对象上运行 finalize() 方法代码>m? 解决方案 根据这 ..
发布时间:2022-01-16 09:44:14 Java开发

Java有析构函数吗?

Java 有析构函数吗?我似乎无法找到任何有关此的文档.如果没有,我怎样才能达到同样的效果? 为了使我的问题更具体,我正在编写一个处理数据的应用程序,并且规范说应该有一个“重置"按钮,可以将应用程序恢复到其刚启动的原始状态.但是,除非应用程序关闭或按下重置按钮,否则所有数据都必须是“实时的". 我通常是一名 C/C++ 程序员,我认为这很容易实现.(因此我计划最后实现它.)我构建了我的 ..
发布时间:2022-01-16 09:24:09 Java开发

Java 什么时候调用 finalize() 方法?

我需要知道 finalize() 方法在 JVM 中被调用.我创建了一个测试类,该类在通过覆盖调用 finalize() 方法时写入文件.它不被执行.谁能告诉我它没有执行的原因吗? 解决方案 一般来说最好不要依赖finalize()来做任何清理等操作 根据 Javadoc(值得一读),它是: 当垃圾收集器确定不再有对该对象的引用时,由垃圾收集器对该对象调用. 正如 Joa ..
发布时间:2022-01-16 09:22:09 Java开发

如何从 Xcode 导出完成的应用程序?

我觉得问这个很傻.我有一个应用程序,我想向某人发送测试版以在他们的机器上进行测试,但我不知道如何让 Xcode 生成一个 .app 文件供我发送给他们.有帮助吗? 解决方案 在 Xcode 13 上你需要选择 Product ->目的地 ->任何 iOS 设备 (arm64). 然后你可以运行 Product ->存档. ..
发布时间:2022-01-04 21:49:34 其他开发

你为什么要实现 finalize()?

我已经阅读了很多关于 finalize() 的 Java 新手问题,发现没有人真正明确表示 finalize() 是一种不可靠的方法,这有点令人困惑清理资源.我看到有人评论说他们用它来清理连接,这真的很可怕,因为接近保证连接关闭的唯一方法是最终实现 try (catch). 我没有接受过 CS 的教育,但我从事专业的 Java 编程已经将近十年了,而且我从未见过有人在生产系统中实现 fina ..
发布时间:2021-11-25 14:08:57 Java开发

Java 有析构函数吗?

Java 有析构函数吗?我似乎无法找到任何关于此的文档.如果没有,我怎样才能达到同样的效果? 为了让我的问题更具体,我正在编写一个处理数据的应用程序,规范说应该有一个“重置"按钮,可以将应用程序恢复到其刚刚启动的原始状态.但是,除非关闭应用程序或按下重置按钮,否则所有数据都必须“实时". 作为一名 C/C++ 程序员,我认为这很容易实现.(因此我计划最后实现它.)我构建了我的程序,以便 ..
发布时间:2021-11-25 13:25:51 Java开发

finalize() 在 Java 8 中调用强可达对象

我们最近将消息处理应用程序从 Java 7 升级到 Java 8.自升级以来,我们偶尔会遇到一个异常,即正在读取流时已关闭流.日志显示终结器线程正在对保存流的对象调用 finalize()(反过来关闭流). 代码的基本大纲如下: MIMEWriter writer = new MIMEWriter( out );in = new InflaterInputStream(databaseBl ..
发布时间:2021-11-25 12:26:30 Java开发

Java中什么时候调用finalize()方法?

我需要知道 finalize() 方法在JVM 中被调用.我创建了一个测试类,当通过覆盖它调用 finalize() 方法时,它会写入文件.它没有被执行.谁能告诉我它不执行的原因? 解决方案 一般来说最好不要依赖 finalize() 来做任何清理等 根据 Javadoc(值得一读),它是: 当垃圾收集器确定不再有对该对象的引用时,由垃圾收集器在该对象上调用. 正如 Jo ..
发布时间:2021-11-25 10:56:43 Java开发

Java中什么时候调用finalize()方法?

我需要知道 finalize() 方法在JVM 中被调用.我创建了一个测试类,当通过覆盖它调用 finalize() 方法时,它会写入文件.它没有被执行.谁能告诉我它不执行的原因? 解决方案 一般来说最好不要依赖 finalize() 来做任何清理等 根据 Javadoc(值得一读),它是: 当垃圾收集器确定不再有对该对象的引用时,由垃圾收集器在该对象上调用. 正如 Jo ..
发布时间:2021-11-19 22:37:53 Java开发

上传 Twitter 视频错误 (PHP).API 响应:段加起来没有达到提供的总文件大小

我正在尝试使用 API 和 tmhOAuth 将视频上传到 Twitter 以进行请求,但是我收到来自 Twitter 的错误消息:“分段加起来没有达到提供的总文件大小.". 我用 INIT 命令中提供的大小检查了块大小,它们是相等的.你能帮我找到解决方案吗? 这是我用作基础的解决方案 这是我的代码: /*** @param string $pathToVideo** @ret ..
发布时间:2021-09-11 18:42:43 PHP

在垃圾回收期间何时调用finalize()?

发件人: “> https://www.baeldung.com/java-memory的Q11-management-interview-questions 当某个对象符合使用GC的条件时,垃圾收集器必须在其上运行finalize();此方法保证只能运行一次,因此收集器将对象标记为已完成,并让它休息直到下一个周期. 我有几个问题要问: 那句话正确吗? 是在标记阶段,垃圾 ..
发布时间:2021-05-09 20:36:20 Java开发

如果Java的世代垃圾收集器遍历活动对象的图,那么他们如何知道要调用finalize()的对象?

我的理解是,诸如ParallelGC和G1之类的GC是“世代"收集器.垃圾回收几乎是作为副产品发生的,因为您将所有活动对象移动到新的堆区域,而旧区域中剩下的任何内容都将被覆盖.除了Java需要在死对象上调用finalize()的部分之外,这种“副产品"的解释很有意义.Java是否还在每个堆区域中保留了一个 all 对象的单独列表,它可以再次与活动对象进行比较? 解决方案 是的, GC 跟踪 ..
发布时间:2021-05-09 20:36:17 Java开发

Finalizer线程正在等待时java.util.ref.Finalizer的内存泄漏

分析堆转储,我在寻找java.lang.ref.Finalizer类的实例. java.lang.ref.Finalizer具有"next"和"prev"成员字段,用于维护链接列表.我总是将FileInputStream作为列表的尾部,并将FileOutputStream作为其先前的条目(分析了几个堆转储). FileInputStream和FileOutputStream的文件描述符分别始终为0 ..
发布时间:2021-02-14 19:42:04 Java开发

错误JDK-8191002尚不清楚编程错误还是JRE错误

关于JDK-8191002中描述的问题,也在 Java密码-PBE中进行了讨论线程安全问题: 我不清楚finalize()方法中Arrays.fill()的用法是否正确或是否有错误.一些答案表明应该使用reachabilityFence,但这是否意味着它是一个错误,或者这意味着该reachabilityFence是围绕VM中的错误的解决方法? 有人可以澄清/评论吗? 从 https:/复制/ ..
发布时间:2020-11-12 19:49:54 Java开发