`
12616383
  • 浏览: 51246 次
  • 性别: Icon_minigender_1
  • 来自: 待定
社区版块
存档分类
最新评论

我的 effective java -- 7.避免使用中介方法 finalizer

 
阅读更多

7.避免使用终结方法 finalizer

终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要的。使用终结方法会导致行为不稳定,降低性能,以及可移植性问题。

 

正确终结方法:

提供显性终止方法,try-finally 

 

终结方法的两种合法用途:

1 当对象的所有者调用前面段落的显示终止方法时,终结方法可以充当“安全网”。如果终结方法发现资源还未被终止,则应该在日志中记录一条警告。

 

2 与对象的本地对等体有关。

分享到:
评论

相关推荐

    object-literal-gc.rar_objects

    2. **弱引用**:在某些情况下,可以使用WeakRef和Finalizer API来创建弱引用,这样即使有弱引用指向对象,垃圾回收器仍然会回收该对象。这在`object-literal-gc.js`中可能会被用到。 3. **内存分析工具**:开发者...

    Module for using Node-API from C++.zip

    使用 `napi_add_finalizer` 可以在 Node.js 对象被垃圾回收时执行清理工作,确保资源得到适当释放。 7. **编译和加载**: 通常,C++ 模块需要使用 `node-gyp` 或 `cmake-js` 工具构建,并通过 `require('bindings...

    Google Java 编程规范(中文版).pdf

    - **规范**: 由于finalizers的不确定性,建议禁用finalizer的使用。 #### 10. 结论 通过遵循Google Java编程规范,开发人员可以编写出更加规范、一致且易于维护的代码。这些规范不仅涵盖了编码格式和样式方面的...

    编写高效优雅Java程序Java系列2021.pdf

    - **终结方法(finalizer)的弊端**:不建议使用finalizer方法,因为它不受JDK的执行时间保证,应当使用try/finally语句来释放资源。 3. 设计原则: - **类和成员的可访问性最小化**:减少类和成员的可访问性,有助...

    jdk-11.0.8_windows-x64_bin.zip

    4. **静态工厂方法替代构造器(JEP 320)**:对于`java.time`包中的日期时间类,推荐使用静态工厂方法而不是构造器,增强了代码的可读性和易用性。 5. **文本块(JEP 329)**:新增了多行字符串表示方式,可以更...

    java并发编程实践的.pptx

    根据提供的文档内容,我们可以归纳并深入探讨Java并发编程的一些核心概念和原理,这些知识点对于理解和实践Java并发编程至关重要。 ### JVM内存模型 JVM内存模型是理解Java并发的基础。主要包含以下几个部分: ##...

    如何执行Java代码审查

    4. 避免使用 finalizer:避免使用finalizer来释放资源,使用try-finally语句来释放资源。 五、静态代码分析清单项分类 1. 使用静态代码分析器:使用静态代码分析器来检查代码的质量和安全性。 2. 查看报告:查看...

    Troubleshooting Memory Problems-Poonam Parhar.pdf

    7. Application Failure with OutOfMemoryError:OutOfMemoryError是Java应用程序中的一个常见错误,它可以导致应用程序崩溃。 8. Unexpected Memory Growth:内存使用率的不稳定增长可以导致应用程序性能下降和崩溃...

    java虚拟机垃圾回收详解.docx

    Java虚拟机(JVM)的垃圾回收(Garbage Collection, GC)是Java编程中的关键概念,它自动管理程序中的内存,避免程序员手动处理内存释放,从而减少内存泄露和程序崩溃的风险。垃圾回收机制的主要目标是识别并回收...

    Java禁止使用finalize方法共2页.pdf.zip

    然而,随着Java版本的更新和垃圾收集机制的改进,`finalize()`方法逐渐失去了其原本的重要性,并且由于其潜在的问题和性能影响,现在被官方建议避免使用。本篇文章将深入探讨`finalize()`方法的原理、问题以及替代...

    Java语言常用的方法名.doc

    - **定义**: 每个 Java 类都可以定义一个特殊的方法——finalizer,该方法由 JVM 在对象被垃圾回收之前调用。 - **特点**: - finalizer 方法不能被直接调用。 - finalizer 方法通常用于释放外部资源。 - **用途**:...

    15个顶级Java多线程面试题及回答.docx

    ### 15个顶级Java多线程面试题详解 #### 题目一:线程执行顺序控制 **题目:** 如何确保线程T2在T1执行完毕后执行,而T3在T2执行完毕后执行? **解答:** 在Java中可以通过`Thread.join()`方法来实现线程之间的顺序...

    编写高效优雅Java程序.pdf

    3. **使用finalizer方法的替代方案**:不应依赖于finalize方法,因为JDK不能保证它何时执行或是否执行。如果需要释放资源,应该使用try/finally结构。 4. **最小化类和成员的可访问性**:以降低类之间的耦合度,并...

    Java性能优化的45个细节

    7. **避免在循环中使用同步方法或锁**:这会导致线程阻塞,影响性能。可以考虑使用并发容器,如ConcurrentHashMap。 8. **有效使用并发工具**:使用ExecutorService、Future、Callable等并发API,避免创建大量线程...

    itcast-jvm.zip

    4. **避免过度使用finalizer**:Finalizer方法可能导致额外的性能消耗和内存占用。 通过对"itcast-jvm.zip"中的实例进行深入学习,开发者不仅可以掌握JVM的基本原理,还能熟练运用各种调优策略,从而实现更高效、...

    python3.6.5参考手册 chm

    Python参考手册,官方正式版参考手册,chm版。以下摘取部分内容:Navigation index modules | next | Python » 3.6.5 Documentation » Python Documentation contents What’s New in Python ...

    编写高效优雅Java程序.docx

    * 使类和成员的可访问性最小化,避免使用终结方法finalizer方法。 * 使可变性最小化,尽量使类不可变。 三、成员变量设计 在成员变量设计中,需要注意以下几点: * 使用static成员变量,避免创建不必要的对象。 *...

Global site tag (gtag.js) - Google Analytics