当前位置: 首页 > news >正文

java dofinalize_Java finalize方法使用

final

修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally

异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。一般异常处理块需要。

finalize

方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

Java中所有类都从Object类中继承finalize()方法。

当垃圾回收器(garbage colector)决定回收某对象时,就会运行该对象的finalize()方法。值得C++程序员注意的是,finalize()方法并不能等同与析构函数。Java中是没有析构函数的。C++的析构函数是在对象消亡时运行的。由于C++没有垃圾回收,对象空间手动回收,所以一旦对象用不到时,程序员就应当把它delete()掉。所以析构函数中经常做一些文件保存之类的收尾工作。但是在Java中很不幸,如果内存总是充足的,那么垃圾回收可能永远不会进行,也就是说filalize()可能永远不被执行,显然指望它做收尾工作是靠不住的。

那么finalize()究竟是做什么的呢?它最主要的用途是回收特殊渠道申请的内存。Java程序有垃圾回收器,所以一般情况下内存问题不用程序员操心。但有一种JNI(Java Native Interface)调用non-Java程序(C或C++),finalize()的工作就是回收这部分的内存。

相关文章:

  • java调用ecdh_Jecc(java椭圆曲线加密库)学习笔记及ECDH实现
  • java雷达_Java编写有关雷达问题,哪位高手帮个忙,谢谢~~~
  • 继承java_Java— 继承
  • java guid_细说Java生成GUID的实现方法
  • java多租户_(九十二)java版spring cloud 多租户社交电子商务-gateway(实现限流)...
  • foxpro mysql_Foxpro数据库命令汇总
  • java generatedvalue_java – 在JPA @GeneratedValue列中手动指定主键的值
  • java io byte_JavaIO之字节流学习笔记
  • 八大排序方法java_八大排序java
  • java一个类怎么调用另一个类的变量_如何在一个类里调用到另一个类的变量的值...
  • java return后执行_java 问题 如果前一个return执行了 那么后面的一系列System.out.println 还会执行吗...
  • java持久层_java访问持久层技术的进化
  • java set encoding file_系统变量file.encoding对Java的运行影响有多大?(转)good
  • java运行一段时间变慢_tomcat 运行程序很慢 运行一段时间就报错: java.lang.OutOfMemoryError: PermGen space...
  • java的开发人员数量_Java开发人员最容易出现的几类错误
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • android 一些 utils
  • Effective Java 笔记(一)
  • github从入门到放弃(1)
  • java 多线程基础, 我觉得还是有必要看看的
  • mysql常用命令汇总
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vuex 笔记整理
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 基于遗传算法的优化问题求解
  • 你真的知道 == 和 equals 的区别吗?
  • 前端性能优化——回流与重绘
  • 使用parted解决大于2T的磁盘分区
  • 探索 JS 中的模块化
  • 微信小程序开发问题汇总
  • 我从编程教室毕业
  • Java性能优化之JVM GC(垃圾回收机制)
  • 阿里云ACE认证之理解CDN技术
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 国内开源镜像站点
  • ​批处理文件中的errorlevel用法
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (4)(4.6) Triducer
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)visual stdio 书签功能介绍
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET Remoting学习笔记(三)信道
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)