Java垃圾收集
在java中,垃圾意味着未引用的对象。
垃圾收集是自动回收运行时未使用内存的过程。 换句话说,它是一种销毁未使用对象的方法。
它类似于,在C语言中使用free()
函数,在C++中使用delete()
。 但是,在java中这些会自动执行。因此,java提供了更好的内存管理。
垃圾收集的好处
- 它使java内存有效,因为垃圾收集器从堆内存中删除未引用的对象。
- 它由垃圾收集器(JVM的一部分)自动完成,因此开发人员不需要额外的工作。
如何对象不被引用?
有以下几个方法:
- 通过归零引用
- 通过为另一个分配引用
- 通过匿名对象等
1. 通过归零引用:
Employee e=new Employee(); e=null;
2. 通过为另一个分配引用:
Employee e1=new Employee(); Employee e2=new Employee(); e1=e2;//now the first object referred by e1 is available for garbage collection
3. 通过匿名对象:
new Employee();
finalize()方法
每次在对象被垃圾回收之前调用finalize()
方法。 此方法可用于执行清理处理。 此方法在Object
类中定义为:
protected void finalize(){}
注意 :JVM的垃圾收集器仅收集由
new
关键字创建的对象。 因此,如果创建了没有new
的任何对象,则可以使用finalize
方法执行清理处理(销毁剩余对象)。
gc()方法gc()
方法用于调用垃圾收集器以执行清理处理。 gc()
可在System
和Runtime
类中找到。
public static void gc(){}
注意 :垃圾收集由称为垃圾收集器(GC)的守护程序线程执行。 此对象在对象被垃圾回收之前调用
finalize()
方法。
Java中垃圾收集的简单示例
public class TestGarbage1{ public void finalize(){System.out.println("object is garbage collected");} public static void main(String args[]){ TestGarbage1 s1=new TestGarbage1(); TestGarbage1 s2=new TestGarbage1(); s1=null; s2=null; System.gc(); } }
执行上面示例代码,得到以下结果:
object is garbage collected object is garbage collected
注意 :无论是最终确定还是垃圾收集都不能保证。
上一篇:多线程执行多任务
下一篇:Java Runtime类
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王