一个利用System.gc和finalize研究Java垃圾回收机制的练习

简介: 一个利用System.gc和finalize研究Java垃圾回收机制的练习

源代码:

package basic;
public class finalizeTest {
  private String name;
  public void finalize(){
    System.out.println("finalize called: " + this.name);
    System.out.println("Thread id in finalize: " + Thread.currentThread().getId());
  }
  public finalizeTest(String name){
    this.name = name;
  }
  public static void main(String[] args) {
    System.out.println("Main Thread id: " + Thread.currentThread().getId());
    finalizeTest test = new finalizeTest("Jerry");
    test.hashCode();
    /* 这个新创建出来的对象实例没有任何变量指向它,因此System.gc()调用之后就会被回收 
     * 而且能发现Scala实例执行finalize方法的线程并不是主线程,打印出的线程ID不一样
     * */
    new finalizeTest("Scala");
    System.gc();
  }
}

打印输出:

Main Thread id: 1
finalize called: Scala
Thread id in finalize: 3
相关文章
|
6天前
|
算法 Java 程序员
Java垃圾回收机制详解
Java垃圾回收机制详解
|
1天前
|
监控 算法 Java
Java性能优化(九)-多线程调优-垃圾回收机制优化
Java性能优化(九)-多线程调优-垃圾回收机制优化
10 0
|
6天前
|
JavaScript Java 测试技术
Java项目基于ssm+vue.js的科研经费管理系统研究附带文章和源代码设计说明文档ppt
Java项目基于ssm+vue.js的科研经费管理系统研究附带文章和源代码设计说明文档ppt
12 0
|
7天前
|
存储 算法 Java
Java的内存模型与垃圾回收机制
Java的内存模型与垃圾回收机制
|
8天前
|
存储 算法 Java
深入理解Java虚拟机(JVM)的垃圾回收机制
【5月更文挑战第30天】 在Java开发领域,垃圾回收(Garbage Collection, GC)是确保应用程序性能和内存效率的关键因素。本文将深入探讨Java虚拟机(JVM)的垃圾回收机制,解析其工作原理、不同算法的特点以及如何通过调优来提高应用性能。我们将透过JVM的内存结构,探索垃圾回收过程中涉及的关键技术点,并讨论现代Java应用中常见的垃圾回收器实现。
|
9天前
|
算法 Java 数据处理
Java程序性能优化研究
Java程序性能优化研究
23 0
|
14天前
|
机器学习/深度学习 Java Windows
Java练习-2023-3-29
Java练习-2023-3-29
7 0
|
20天前
|
存储 Java
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
Java基础复习(DayThree):字符串基础与StringBuffer、StringBuilder源码研究
|
21天前
|
算法 Java Python
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
保姆级Java入门练习教程,附代码讲解,小白零基础入门必备
|
21天前
|
存储 算法 Java
Java一分钟之-Java内存模型与垃圾回收机制概览
【5月更文挑战第16天】本文简述Java内存模型(JMM)和垃圾回收(GC)机制。JMM包括栈、堆、方法区、程序计数器和本地方法栈。GC负责回收不再使用的对象内存,常用算法有新生代、老年代和全堆GC。文章讨论了内存溢出、死锁和GC性能等问题,提出了解决方案,如调整JVM参数和优化GC策略。此外,还强调了避免内存泄漏、大对象管理及正确释放资源的重要性。理解这些概念有助于提升Java应用的性能和稳定性。
26 1