java循环创建对象应该在循环体内还是循环体外

第一种:
    for(int i = 0; i < 100; i++) {
        Object obj = new Object()
    }

第二种:
    Object obj = null
    for(int i = 0; i < 10000; i++) {
        obj = new Object()
    }

第一次:

  Object obj = new Object();//写在100个循环内等于你有100个引用对应了100个对象

  所以100个对象在一段时间内都是会占用内存,直到内存不足GC主动回收.

第二次:
  obj = new Object();//写在100个循环内等于你使用1个引用分别100次调用了100个对象

  所以当后一个对象init后,前一个对象已经是“无引用状态”,会很快的被GC自动回收.

结论:

  第二种方法能更好的管理内存。

原文地址:https://www.cnblogs.com/sinosoft/p/12614645.html

时间: 2024-10-11 22:32:13

java循环创建对象应该在循环体内还是循环体外的相关文章

数据结构Java实现07----队列:顺序队列&amp;顺序循环队列、链式队列、顺序优先队列

数据结构Java实现07----队列:顺序队列&顺序循环队列.链式队列.顺序优先队列 一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列. 下图是一个依次向队列中插入数据元素a0,a1,...,an-

Android(java)学习笔记195:三重for循环的优化(Java面试题)

1.首先我们看一段代码: for(int i=0;i<1000;i++){ for(int j=0;j<100;j++){ for(int k=0;k<10;k++){ testFunction (i,j,k); } } } 从给出的代码可知,不论如何优化,testFunction执行的次数都是相同的,该部分不存在优化的可能.那么,代码的优化只能从循环变量i.j.k的实例化.初始化.比较.自增等方面的耗时上进行分析. 首先,我们先分析原题代码循环变量在实例化.初始化.比较.自增等方面的耗

判断单链是否循环,并且找出第一个循环节点

介绍 判断单链是否循环,并且找出第一个循环节点. 思路 [判断单链是否循环]:如果单链是循环的,那么循环部分就是封闭的.这好比一个田径运动场,当两个人跑步时,开始虽然有一定的间距,但他们迟早会相遇的. 顺其自然的我们从中抽取一个数学模型,一个是步长Steps(对应两人刚开始跑步时的间距):一个是判断单链循环的条件nodeX==nodeY(两人"相遇"). [找出第一个循环节点]:我想过好多其它方法,实现起来都比较难,后来出去骑行了两个小时,回来后就想到借助Hash存储,Hash元素包含

退出循环break,在while、for、do...while、循环中使用break语句退出当前循环,直接执行后面的代码。

在while.for.do...while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { if(特殊情况) {break;} 循环代码 } 当遇到特殊情况的时候,循环就会立即结束.看看下面的例子,输出10个数,如果数值为5,就停止输出.

子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次, 接着再回到主线程又循环 100,如此循环 50 次

子线程循环 10 次,接着主线程循环 100,接着又回到子线程循环 10 次, 接着再回到主线程又循环 100,如此循环 50 次 1 package TestThread; 2 3 /** 4 * 子线程循环 10 次, 接着主线程循环 100, 接着又回到子线程循环 10 次, 接着再回到主线程又循环 100, 如此循环 50 次 5 * 6 * @author trfizeng 7 * 8 */ 9 public class ThreadTest { 10 static int round

Java中创建对象的几种方式

Java中创建对象的五种方式: 作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字.使用Class类的newInstance方法.使用Constructor类的newInstance方法.使用Clone方法.使用反序列化. 使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的够赞函数(无参的和有参的).比如:Student student = ne

C#语句二——循环语句(for循环与for循环嵌套)

循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. for(初始条件;循环条件;状态改变) { 循环体 } break ——中断循环,跳出循环 continue——停止本次循环,进入下次循环. 注:●执行步骤:初始条件——循环条件——循环体——状态改变. ●死循环:出不来,一直在执行 for (; ; ) { Console.WriteLine("你好"); } 一.for循环例题 1.找出100以内与7有关的数并打印:(1).从1找到100(2).找出与7有

【Javascript】: for循环中定义的变量在for循环体外也有效

for循环中定义的变量在for循环体外也有效 <script> (function(){ var a = 111; for(var i=0;i<5;i++){ var carl = 111; console.log(i); } alert("carl is:"+carl); })(); </script> 结果: carl is:111

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次-004

子线程循环10次,接着主线程循环100次,接着又回到子线程循环10次,接着再回到主线程循环100次,如此循环50次 public class Sub10Main100Loop50Thread { public static void main(String[] args) throws InterruptedException { Business business = new Business(); new Thread(new Runnable(){ @Override public voi

C#语句——循环语句(for循环与for循环嵌套)

循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. for(初始条件;循环条件;状态改变) { 循环体 } break ——中断循环,跳出整个循环 continue——停止本次循环,进入下次循环. 注:●执行步骤:初始条件——循环条件——循环体——状态改变. ●死循环:出不来,一直在执行 for (; ; ) { Console.WriteLine("你好"); } 一.for循环例题 1.找出100以内与7有关的数并打印:(1).从1找到100(2).找出与