垃圾回收

当引用类型的实体,如对象、数组等不再被任何变量引用的时候。这块占用的内存就成为了垃圾。JVM会根据自己的策略决定是回收内存

注意:

  1. 垃圾回收只回收内存中的对象,无法回收物理资源(数据库连接,网络IO等)
  2. 程序无法精确的控制台垃圾回收的运行,垃圾回收汇总任何时候进行,系统自动。
  3. 在垃圾回收机制回收任何对象之前总会调用他的finalize()方法。

对象在内存中的三种状态:

  1. 可达状态:对象有变量再引用。
  2. 可恢复状态:如果一个对象没有任何变量引用它,但是调用了finalize()后又有新的变量引用了对象,中间的状态为“可恢复状态”。
  3. 不可达状态:对象没有变量引用,并且重新调用了finalize()方法后,还没有变成可达状态,就变为不可达状态,系统开始回收资源。

强制垃圾回收System.gc() Runtime.getRuntime.gc()

package com.zmd.study.rubbish;

import javax.naming.Name;

/**
* @ClassName RubbishTest
* @projectName: object1
* @author: Zhangmingda
* @description: 测试干预垃圾回收
* date: 2021/4/6.
*/
public class RubbishTest {
private String name;
//构造方法
public RubbishTest(String name) {
this.name = name;
} //重写finalize增加输出便于观察是否自动回收了对象
@Override
protected void finalize() throws Throwable {
System.out.println(name + "要被回收了");
super.finalize();
}
//测试创建多个对象,看垃圾有没有自动回收
public static void main(String[] args) {
for(int i=0;i<1000; i++) {
new RubbishTest("name" + i);
System.out.println("循环打印" + "name" + i);
//强制垃圾回收,当没有变量引用上面new出来的对象,就会调用finalize()方法回收内存
System.gc();
//Runtime.getRuntime().gc();
} } }

Java的垃圾回收机制:强制回收System.gc() Runtime.getTime().gc()的更多相关文章

  1. JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算

    JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...

  2. JVM 垃圾回收机制( 一) 回收对象的判定

    关于JVM 的垃圾回收机制,我们一般都没过多深入,因为JAVA 和 C++ 的一个很大区别就是,JAVA 帮我们做了垃圾回收,而不用像C++ 那么样手动进行回收,当然任何自动的东西都存在一定弊端,比如 ...

  3. 浅析JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 注意:垃圾回 ...

  4. Java基础知识总结之垃圾回收机制

    垃圾回收机制 Java垃圾回收机制是Java语言的重要功能之一.当程序创建对象,数组等引用类型对象时,系统会自动在内存区为之分配一块内存,对象就保存在这块内存区内,当这块内存不再被任何变量引用时,这块 ...

  5. Java基础教程——垃圾回收机制

    垃圾回收机制 Garbage Collection,GC 垃圾回收是Java的重要功能之一. |--堆内存:垃圾回收机制只回收堆内存中对象,不回收数据库连接.IO等物理资源. |--失去使用价值,即为 ...

  6. 【Java】怎么回答java垃圾回收机制

    (1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象 ...

  7. JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...

  8. java中垃圾回收机制和引用类型

    在java中JDK1.2版本以后,对象的引用类型分为四种,从高到低依次为:强引用.软引用.弱引用.虚引用. ①强引用的特点:垃圾回收机制绝不会回收它,即使内存不足时,JVM宁愿抛出OutOfMemor ...

  9. java垃圾回收机制学习总结

    最近学习了一下java垃圾回收机制,将其主要内容大致总结一下: 1.什么是垃圾回收机制 java GC机制(garbage collection,垃圾收集,垃圾回收),是java特有的机制,作为jav ...

随机推荐

  1. oracle和mysql的拼接查询

    oracle的 SELECT * FROM sys_user a WHERE 1=1 AND a.company_id || a.login_name IN('3001rddb414') 196676 ...

  2. 【虚树学习笔记([SDOI2011]消耗战)】

    题意 [SDOI2011]消耗战 想法 首先我们可以很自然的想到怎么在整棵树上进行求解\(DP\) 很简单 每个点有两个选择 要么对其子树的关键点递归求解 要么自己断开 当然断开的\(cost\)为其 ...

  3. UOJ #76 -【UR #6】懒癌(思维题)

    UOJ 题面传送门 神仙题. orz czx,czxyyds 首先没有懒癌的狗肯定不会被枪毙,证明显然. 接下来考虑怎样计算一种局面的答案,假设 \(dp_S\) 表示对于有且仅有 \(S\) 中的狗 ...

  4. Codeforces 986E - Prince's Problem(树上前缀和)

    题面传送门 题意: 有一棵 \(n\) 个节点的树,点上有点权 \(a_i\),\(q\) 组询问,每次询问给出 \(u,v,w\),要求: \(\prod\limits_{x\in P(u,v)}\ ...

  5. 短序列组装Sequence Assembly(转载)

    转载:http://blog.sina.com.cn/s/blog_4af3f0d20100fq5i.html 短序列组装(Sequence assembly)几乎是近年来next-generatio ...

  6. mysql—将字符型数字转成数值型数字

    今天写sql语句时,相对字符串类型的数字进行排序,怎么做呢? 需要先转换成数字再进行排序 1.直接用加法 字符串+0 eg: select * from orders order by (mark+0 ...

  7. Python time&datetime模块

    1.time&datetime模块 time&datetime是时间模块,常用以处理时间相关问题 time.time() #返回当前时间的时间戳timestamp time.sleep ...

  8. kubernetes部署 etcd 集群

    本文档介绍部署一个三节点高可用 etcd 集群的步骤: etcd 集群各节点的名称和 IP 如下: kube-node0:192.168.111.10kube-node1:192.168.111.11 ...

  9. lua_newthread的真正意义

    lua_newthread 这个接口,存在误导性,很多人第一次试图用它来解决多线程问题时,都会入坑. 实际上,这个接口真正的用法,是给那些在lua更底层的某些行为(通常是递归)导致了lua的栈溢出而准 ...

  10. Docker环境中部署Prometheus及node-exporter监控主机资源

    前提条件 已部署docker 已部署grafana 需要开放 3000 9100 和 9090 端口 启动node-exporter docker run --name node-exporter - ...