java 垃圾回收 null_java方法中把对象置null,到底能不能加速垃圾回收

今天逛脉脉,看见匿名区有人说java中把对做置null,这种做法很菜,不能加速垃圾回收,但是我看到就觉得呵呵了,我是觉得可以加速置null对象回收的。

测试的过程中,费劲的是要指定一个合理的测试堆大小,然而针对的JDK不同版本不同,指定的堆大小也不同,测试出的效果有些不同,报的内存堆栈错误信息不一致,但是可以验证把对象置null,是能加速垃圾回收的。

本测试程序测试在jdk7的基础上。

1. 设定堆的大小信息,及GC打印信息

-Xms2M -Xmx3M -XX:PermSize=2M -XX:MaxPermSize=4M -XX:+PrintGCTimeStamps -XX:-PrintClassHistogram -  XX:+PrintHeapAtGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime - XX:+HeapDumpOnOutOfMemoryError

4e09b1363ce922ec18e3529a9cf12e0e.png

2.在main方法中模拟出一个占内存很大的list对象,至少保证运行方法中单个list的大小不会挤爆内存

public class TestGC {

public static void main(String[] args) throws InterruptedException {

List list= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

list.add(a);

}

}

}

调整堆的大小,保证运行不会报错堆栈溢出错误,接着看下面的代码

public class TestGC {

public static void main(String[] args) throws InterruptedException {

List list= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");

list.add(a);

}

//list =null;

Thread.sleep(1000);

List list2= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");

list2.add(a);

}

//list2 =null;

Thread.sleep(1000);

List list3= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");

list3.add(a);

}

//list3 =null;

Thread.sleep(1000);

List list4= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");

list4.add(a);

}

//list4 =null;

Thread.sleep(1000);

List list5= new ArrayList();

for (int i = 0; i < 100000; i++) {

String a = new String("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");

list5.add(a);

}

//list5 =null;

Thread.sleep(1000);

List list6= new ArrayList();

for (int i = 0; i<100000; i++) {

String a = new String("fffffffffffffffffffffffffffffffffffffffffffffffffffffffff");

list6.add(a);

}

//list6= null;

System.out.println("ÔËÐгɹ¦¡£");

}

}

运行中内存溢出了,错误信息如下

612f97ccdaa7387dcbbb5a2def823f79.png

3. 见证奇迹的时刻到了,看看到底有木有用,把代码中的注释放开

18e1f4bd79acaff5f23a05abca49e4ed.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442284.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零基础学java web开发pdf_新手学Java Web开发.pdf

作 者 &#xff1a;杨磊等编著出版发行 : 北京&#xff1a;北京希望电子出版社 , 2010.01ISBN号 &#xff1a;978-7-89498-988-8页 数 &#xff1a; 480丛书名 : 新手学编程系列原书定价 : 49.80主题词 : 计算机编程软件&#xff0c;JAVA WEB中图法分类号 : TP3 ( 工业技术->…

java 外卖订餐系统_java外卖订餐系统小项目

本文实例为大家分享了java外卖订餐系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下执行结果&#xff1a;通过选择功能序号&#xff0c;执行响应的功能&#xff1a;代码实现&#xff1a;package 外卖订餐系统;/** 代码优点&#xff0c;使用 循环&#xff1a;* 显…

java 字符串包含某个字符_java中判断字符串中是否包含某个特定字符串的方法有哪些...

判断一个字符串是否包含某个子串的n种方法&#xff1a;1、startsWith()方法2、contains()方法3、indexOf方法startsWith()方法这个方法有两个变体&#xff0c;用于检测字符串是否以指定的前缀开始。此方法定义的语法如下:public boolean startsWith(String prefix, int toffset…

java的方法调用中分不清_java中不太清晰的知识点

一、什么包需要导入&#xff0c;什么包不需要导入1.java.lang包的内容是自动导入的&#xff0c;不需要手动导入&#xff0c;其它必须手动导入。2.java.io.OutputStreamWrite已经是完整的类&#xff0c;无需再导入&#xff0c;而printWrite这个类&#xff0c;并不是调用完整的类…

java生命小游戏_Java修炼——飞机生存小游戏

在学习了java入门的课程之后&#xff0c;自己动手跟着老师写的一个小游戏&#xff0c;用的是Frame。总共有七个类。1.飞机游戏的主窗口(MyGameFrame)继承Frame。package com.bjsxt.plane;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Gr…

链队列的基本运算java_链式队列基本操作的实现问题

问题描述&#xff1a;用链式存储方式实现队列的基本操作涉及变量&#xff1a;front&#xff1a;Node型自定义变量&#xff0c;指向队首元素rear&#xff1a;Node型自定义变量&#xff0c;指向队尾元素涉及教材&#xff1a;《数据结构——Java语言描述(第2版)》 清华大学出版社大…

mysql数据库优化看的书_MySQL 数据库优化,看这篇就够了

点击上方"IT牧场"&#xff0c;选择"设为星标"技术干货每日送达&#xff01;来源&#xff1a;segmentfault.com/a/1190000018631870前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相…

python 升级所有库_自动更新Python所有第三方库

一般python用得比较久以后&#xff0c;就会安装很多第三方的库。比如这是我的pip list情况&#xff1a;pip list而且一屏还显示不完。通过如下命令可以看到需要更新的第三方库&#xff1a;pip list -o需要更新的库而pip提供的更新命令只能一个个的更新...pip install -U 库名 #…

java 反射 类变量_java反射机制取出model类的所有变量,以及value

工作上遇到个问题,顺便解决了,希望对大家有帮助package com.zuidaima.util;public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InstantiationException {Class> obj Class.forName("com.roi…

php 去掉不可见字符串,php去掉指定字符串的办法

php去掉指定字符串的办法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后定义字符串&#xff1b;最后通过“str_replace(array("_","",""),"",$str);”方法去掉指定字符串即可。推荐&#xff1a;《PHP视频教程》用正则可以解决问…

php文件上传并保存路径到数据库,thinkphp表单上传文件并将文件路径保存到数据库中?...

上传单个文件&#xff0c;此文以上传图片为例&#xff0c;上传效果如图所示创建数据库upload_img,用于保存上传路径CREATE TABLE seminar_upload_img ( id int(11) NOT NULL AUTO_INCREMENT, img_name varchar(255) DEFAULT NULL COMMENT 图片名称, img_url varchar(255) DE…

PHP数组的访问方法有几种,数组常用方法有哪些

数组中常用的方法有&#xff1a;1、给数组末尾添加新内容的push方法&#xff1b;2、删除数组最后一项的pop方法&#xff1b;3、删除数组第一项的shift方法&#xff1b;4、向数组首位添加新内容unshift方法等等。数组常用的一些方法&#xff1a;1、push()向数组的末尾添加新内容…

java opcode 反汇编,如何将VM的opcode嵌入汇编源码中

这次来一个关于VM的混淆办法&#xff0c;可能只是个小trick&#xff0c;仅仅来自胡思乱想也许你会觉得很奇怪&#xff0c;一个VM能有啥新鲜的&#xff0c;对&#xff0c;单纯来说VM保护源代码已经非常的成熟了&#xff0c;所以在这里只做最基本的介绍&#xff0c;而且这次的重点…

php ip 合法,什么是合法ip地址

合法的IP地址中&#xff0c;每个三位数都是在0~254之间的&#xff0c;不可能是大于254就连255都不行。这才是合法的IP地址&#xff0c;还有 IP地址有A\B\C类IP。iPv4的ip地址都是(1~255).(0~255).(0~255).(0~255)的格式。A类的IP地址范围为0.0.0.0-127.255.255.255B类的IP地址范…

php session和cookie区别,php中session和cookie的区别是什么?

一、Session(1)Session的由来以及介绍Session:在计算机中&#xff0c;尤其是在网络应用中&#xff0c;称为“会话控制”,生存时间为用户在浏览某个网站时&#xff0c;从进入网站到关闭这个网站所经过的这段时间&#xff0c;也就是用户浏览这个网站所花费的时间。由于Http是一种…

matlab 泡泡图,使用matlab绘制2维、3维气泡图

在学习模糊c均值聚类时&#xff0c;突然想到能否将每个样本对所属簇的奴属度(C)用气泡图的形式表示出来&#xff0c;这样就可以在一张图上同时获得分类与奴属度(C)两类信息。在matlab中没有绘制气泡图的专用函数&#xff0c;不过可以通过手动设置参数&#xff0c;来最终达到气泡…

用vscode可以开发php,【编程开发工具】vscode能够编写php吗

Visual Studio Code一个轻量且壮大的代码编辑器&#xff0c;支撑Windows&#xff0c;OS X和Linux。内置JavaScript、TypeScript和Node.js支撑&#xff0c;而且具有雄厚的插件生态系统&#xff0c;可通过装置插件来支撑C、C#、Python、PHP等其他言语。Visual Studio Code设置php…

ant混淆编译java web,Android中使用ant混淆编译

搞了好几天&#xff0c;查看了上百个网站&#xff0c;最后摸索出一套很简单的ant混淆编译的方法。下面开始&#xff1a;1.拿一个普通项目来说&#xff0c;首先为它加上ant编译功能。android update project --name project_name -t 3 -p D:/temp/project_name此时会在项目根目录…

matlab漂亮图表,漂亮,美观的图表之Matlab强势回归~~~~走你8

今天来画3D plot% Load the dataload latticeExamplexx x(:);yy y(:);zz z(:);% locate the non-zero pointsa find(T~0);% plot the non-zero points using a scatter plot% use the values of T to represent both color and size of symbolsscatter3(xx(a),yy(a),zz(a),…

100转换成二进制 java,一段简单的java代码,十进制转二进制

一段简单的java代码&#xff0c;十进制转二进制mip版 关注:188 答案:5 悬赏:40解决时间 2021-01-23 23:14已解决2021-01-23 05:43代码如下&#xff0c;希望可以帮我说明白点这段代码。factorOfTwo到底是指的什么&#xff1f;这段代码是如何运行的&#xff1f;多谢int number…