【问题标题】:Garbage collection minimization. Will someone clarify something about iterators?垃圾收集最小化。有人会澄清一些关于迭代器的事情吗?
【发布时间】:2013-07-09 04:53:53
【问题描述】:

我是一个 Android 菜鸟。我对这种说法有疑问:

避免在创建新对象时使用迭代器。

究竟什么是迭代器?我以为是这样的:

    int a = 1;
    while (a < 100)
        System.out.println(a);
        a += 1;  //iterator

这里的关键是垃圾收集。这是一个问题,因为每次循环循环时,都会在内存中创建一个新的 a 实例?否则,我想不出一种方法来做这样的事情。也许为“a”创建一个包含“a”并具有 add(int something) 方法和 getA() 方法的对象。

否则我该怎么做(如果可能)?我错过了什么吗?

【问题讨论】:

  • 'a' 在循环上方定义,并且仅在每次循环迭代时重新分配。 Iterator 是 Java/Android 核心 API 中的一个接口
  • 你知道你打印的代码会永远循环吗?你需要大括号...

标签: java android garbage-collection iterator


【解决方案1】:

1) 不,那不是Iterator。那就是迭代。 Iterator 是 Java/Android API 中的接口

2) int 是原始类型,而不是Object 类型,因此它将分配在堆栈上而不是堆上。一旦方法调用完成,堆栈就会消失。

3) 即使您在循环内使用引用变量在循环内创建新对象,该引用仍将作用于循环。循环完成后,引用将消失,对象将有资格进行 GC。

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 2014-03-29
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    相关资源
    最近更新 更多