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 ( 工业技术->…

es 映射 mysql_ElasticSearch系列02:ES基础概念详解

1、ES 简介1)定义ES是elaticsearch简写&#xff0c; Elasticsearch是一个开源的高扩展的分布式全文检索引擎&#xff0c;它可以近乎实时的存储、检索数据&#xff1b;本身扩展性很好&#xff0c;可以扩展到上百台服务器&#xff0c;处理PB级别的数据。Elasticsearch也使用Java开…

java 跨域上传_java后台图片跨域上传图片 文件

发送方ResponseBodyRequestMapping(value"/imgUpLoadNewOneKuaYu")public String imgUpLoadNewOneKuaYu(HttpServletRequest request) throwsIOException {String urlStr "http://localhost:9080/no-js/admin/upload";Map textMap new HashMap();Multipar…

java ajax 导入excel_Ajax asp.net 导入Excel

$("#btnUploadExcelSave").click(function () {var fileObj document.getElementById("file").files[0]; // js 获取文件对象var FileController "../FileHandler.ashx?type3"; // 接收上传文件的后台地址// FormData 对象var form new Form…

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

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

mysql 性能问题_mysql性能问题

性能优化的目的是什么呢&#xff1f;(合理利用可利用的资源)性能优化的方向&#xff1a;硬件方面&#xff1a;CPU、内存、IO、网络、硬盘、显卡软件方面&#xff1a;mysql这个软件内部优化&#xff0c;比如sql、算法&#xff0c;一些配置项目方面&#xff1a;需求设计、架构优化…

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

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

java socket 判断是否断开_Linux Socket:如何在客户端程序中检测断开的网络?

仅在调用write()函数时才能检测到未插入的以太网电缆 . 这是因为tcp堆栈的tcp重传没有你的意识 . 这是解决方案 .即使您已经为应用程序套接字设置了keepalive选项&#xff0c;但是如果您的应用程序一直在套接字上写入&#xff0c;您无法及时检测到套接字的死连接状态 . 那是因为…

java backbone_在Backbone.js中发出POST请求

我有一个RESTful服务器&#xff0c;它接受url编码的参数 .就我而言&#xff0c;发帖请求https&#xff1a;//我的服务器&#xff1a;8443 / test / auth将请求标头设置为Content-Type&#xff1a;application / x-www-form-urlencoded并传递参数username myusername password …

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

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

纪念品分组java_纪念品分组 ——易懂、简介、技巧(Java代码)

我的思路&#xff1a;1、先排序2、两层循环嵌套&#xff0c;外面的一层从数组末尾开始&#xff0c;里面一层从头开始遍历&#xff0c;首先满足的条件就是这两个数都不能是 NULL 的&#xff0c;并且两个物品的价值加起来不大于最大价值&#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 线程类 通信_Java 中利用管道实现线程间的通讯

在Java 语言中&#xff0c;提供了各种各样的输入输出流(stream),使我们能够很方便的对数据进行操作&#xff0c;其中&#xff0c;管道(pipe)流是一种特殊的流&#xff0c;用于在不同线程(threads)间直接传送数据。一个线程发送数据到输出管道&#xff0c;另一个线程从输入管道中…

java整型缓存_JAVA整型包装类的缓存策略

Java Integer的缓存策略public classJavaIntegerCache {public static voidmain(String... strings) {Integer integer1 3;Integer integer2 3;if (integer1 integer2)System.out.println("integer1 integer2");elseSystem.out.println("integer1 ! integer2&q…

java年利润编程题_[编程入门]利润计算-题解(Java代码)

![](/image_editor_upload/20200216102044_14158.png)这也是简单的分类问题&#xff0c;用if进行分类后就可以用switch进行分类计算利润代码如下&#xff1a;package javaapplication;import java.util.Scanner;public class JavaApplication{public static void main(String[]…

java面向方面编程_面向方面编程的介绍----基本概念

面向对象的编程中常用的概念是&#xff1a;继承、封装、多态。在面向方面的编程中常使用的概念是&#xff1a;advices/interceptors, introductions, metadata, and pointcuts。AOP 面向方面编程的介绍----基本概念(3)面向方面的编程思路很简单。从面向过程、函数的编程到面向对…

链队列的基本运算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 kryo register_java相关:Kryo框架使用方法代码示例

java相关&#xff1a;Kryo框架使用方法代码示例发布于 2021-1-21|复制链接摘记: Kryo框架的source已移至https://github.com/EsotericSoftware/kryo &#xff0c;进入此页面&#xff0c;然后点击右边的Download Zip按钮&#xff0c;就能下载到最新版本的Kr ..Kryo框架的source已…