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

 我来答
就烦条0o
2018-01-24 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46494
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

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


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

[java] view plain copy

  • public class TestGC {  

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

  • List<String> list= new ArrayList<String>();  

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

  • String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");  

  • list.add(a);      

  • }  

  • }  

  • }  

  • 调整堆的大小,保证运行不会报错堆栈溢出错误,接着看下面的代码
  • [java] view plain copy

  • public class TestGC {  

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

  • List<String> list= new ArrayList<String>();  

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

  • String a = new String("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");  

  • list.add(a);      

  • }  

  • //list =null;  

  • Thread.sleep(1000);  

  • List<String> list2= new ArrayList<String>();  

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

  • String a = new String("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");  

  • list2.add(a);      

  • }  

  • //list2 =null;  

  • Thread.sleep(1000);  

  • List<String> list3= new ArrayList<String>();  

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

  • String a = new String("cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc");  

  • list3.add(a);      

  • }  

  • //list3 =null;  

  • Thread.sleep(1000);  

  • List<String> list4= new ArrayList<String>();  

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

  • String a = new String("dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");  

  • list4.add(a);      

  • }  

  • //list4 =null;  

  • Thread.sleep(1000);  

  • List<String> list5= new ArrayList<String>();  

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

  • String a = new String("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee");  

  • list5.add(a);      

  • }  

  • //list5 =null;  

  • Thread.sleep(1000);  

  • List<String> list6= new ArrayList<String>();  

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

  • String a = new String("fffffffffffffffffffffffffffffffffffffffffffffffffffffffff");  

  • list6.add(a);      

  • }  

  • //list6= null;  

  • System.out.println("运行成功。");  

  • }  

  • }  

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


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


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式