【Java-GC】集合Collection的clear()和GC垃圾回收测验
转自CSDN博客。修复引用网易图片引起的图片丢失。
个人理解:
虽然不做任何操作,GC会自动回收 ArrayList 内部的对象和 ArrayList 自己本身占用的空间,但GC的时间无法确定,可能在程序运行结束后(对于要一直运行的服务肯定无法接受),也可能由JVM按照某种调度算法定时回收。
但个人认为,程序员主动的使用 list = null,map = null 等赋予 null 值 的方法标记自己不再使用的对象,更有利于GC回收。毕竟再智能的GC算法,也比不上创造这些Java对象的程序员。
原文如下:
一、一个简单的例子
代码运行结果图:
运行结果图1为上代码图的运行结果,说明在创建了一个大小为100W的列表后,内存分配了一定大小的空间,在clear() 之后,调用gc()垃圾清除后得到创建列表以后的内存大小。
如果将代码中第11行改为
ArrayList<String> list= new ArrayList<String>();
后将得到运行结果图2.说明在创建了一个默认大小的列表后,往里面添加数据时自动扩充了列表的大小,因为列表扩充时成倍扩充的原理,最后调用clear()和gc()后的结果内存要比图1中少(可能此时列表的SIZE要大于100W).
如果将代码中第32行中的list.clear();改为list=null; 将会得到以下结果:
或将第32行删掉后也会得到上述结果.
说明赋值NULL后不仅列表中的对象变成了垃圾,为列表分配的空间也会回收,什么都不做与赋值NULL一样,说明直到程序结束也用不上列表list了,它自然就成为垃圾了.clear()只是清除了对象的引用,使那些对象成为垃圾。
【Java-GC】集合Collection的clear()和GC垃圾回收测验相关推荐
- java之集合Collection之List接口总结
总结自韩顺平老师的零基础30天学 JAVA 目录 一.集合的框架体系 1.java的集合体系主要可分为两大类:Collection和Map集合. 2.Collection和Map的区别 二.Colle ...
- java 终结此段代码并重新运行_Java垃圾回收
好久没看关于java的书了, 最近, 看了James Gosling的<>, 做了一些读书笔记. 这部分是关于垃圾回收的. 1.垃圾回收 对象是使用new创建的, 但是并没有与之相对应的d ...
- Java虚拟机(三)——初识JVM的垃圾回收机制
前言 对于程序计数器.虚拟机栈.本地方法栈这三个部分而言,其生命周期与相关线程有关,随线程而生,随线程而灭.并且这三个区域的内存分配与回收具有确定性,因为当方法结束或者线程结束时,内存就自然跟着线程回 ...
- 深入了解java虚拟机(JVM) 第六章 垃圾回收算法
一.标记清除算法 标记清除算法顾名思义,就是将需要回收的对象进行标记,然后进行清除.那么这个算法就有标记和清除两种过程.标记过程主要是通过可达性分析算法进行判断存活对象,然后遍历所有的对象来找到需要回 ...
- java基础---集合collection的方法介绍
package com.henu;import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; / ...
- java基础 - 集合Collection
1. 1-50的随机数 用集合实现 生成50个[10,50]之间的随机数,然后按数字从小到大顺序输出.(这次用Map做) 输出格式 数字:出现次数 1 //用ArraryList 集合来实现 2 3 ...
- java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?
通常,没有. 但就像所有事情一样:这取决于.如今,Java中的GC非常好,所有内容都应该在不再可用后立即清理.这就是在为局部变量留下一个方法之后,以及当不再为字段引用类实例时. 如果您知道它将继续引用 ...
- 【Java练习题】Java 程序的输出 | 第十套(垃圾回收)
- Java进阶 JVM 内存与垃圾回收篇(一)
JVM 1. 引言 1.1 什么是JVM? 定义 Java Vritual Machine - java 程序的运行环境(Java二进制字节码的运行环境) 好处 一次编译 ,到处运行 自动内存管理,垃 ...
- java中gc是怎么工作的_java中的GC(gabage collection)如何工作
1. "引用记数(reference counting)"是一种简单但速度很慢的垃圾回收技术.每个对象都含有一个引用记数器,当有引用连接至对象时,引用计数加1.当引用离开作用域或被 ...
最新文章
- umi3 如何管理model_django admin 管理工具
- Mongodb WiredTiger存储引擎特性
- csdn本地网页 打开自动跳转首页的 解决办法
- DL之AlexNet:利用卷积神经网络类AlexNet实现猫狗分类识别(图片数据增强→保存h5模型)
- Linux下百度云盘报 获取bdstoken失败
- fortran 读整行_我整周读过的最有趣的东西
- 贪心算法——字典序最小问题
- Python开发游戏自动化后台脚本
- 21年寒假第二周周练 蒜厂年会(一)最大连续子序列和
- Java Test Fore
- 作业成本法中的成本动因分析----by AMT 邓为民
- 智力题--CSDN论坛收集
- 计算机听评课会议记录,研修评课议课会议记录
- Python IDEL查询和修改当前目录
- 简单介绍长短期记忆网络 - LSTM
- 基于ssm儿童玩具租赁管理系统
- 2.2_枚举类型的特点
- 轻松上手 | 使用国内资源安装 K3s 全攻略
- 制作系统启动安装U盘
- 跳槽需要注意的一些事