say*_*ali 14 java garbage-collection finalize
我在java的system.gc()和finalize()方法之间混淆.我们不能强制将垃圾对象收集到JVM.我们允许在我们的java代码中编写这两种方法然后如果两者都用于垃圾收集,那么为java提供两种垃圾收集方法有什么意义呢?
请告诉我两种方法的确切工作方式以及内部工作原理如何?
ewe*_*nli 11
System.gc()请求系统执行垃圾收集.Javadoc说:
运行垃圾收集器.
你无法控制垃圾收集器的"硬"程度.垃圾收集器如何在内部工作是特定于VM的,并且是一个独立的研究课题.但是通常会有"完整"的垃圾收集和一些较小的"增量"收集.因此,请考虑System.gc作为请求,但不保证您的对象的垃圾收集将发生.
Object.finalize()可以覆盖以指定当给定对象被垃圾收集时要做什么(实际上在垃圾收集之前要做什么).Javadoc说:
当垃圾收集确定没有对该对象的更多引用时,由对象上的垃圾收集器调用.
终结器的经典用法是在对象被垃圾收集时解除分配系统资源,例如释放文件句柄,临时文件等.
当JVM退出时,不要使用终结器来执行操作.为此,请使用您注册的关闭钩子Runtime.getRuntime().addShutdownHook(Thread).
| 归档时间: |
|
| 查看次数: |
19488 次 |
| 最近记录: |