使用带有大整数的For循环会给Java带来内存问题。[安卓]

使用带有大整数的For循环会给Java带来内存问题。[安卓],java,android,for-loop,memory,biginteger,Java,Android,For Loop,Memory,Biginteger,我现在正在尝试循环通过一个大整数,就像这样 BigInteger y; BigInteger yu = BigInteger.valueOf(17); for(y= new BigInteger("96");y.compareTo(yu.add(y)) < 0;y=y.add(BigInteger.ONE)){ Toast.makeText(getApplicationContext(),"y="+y,Toast.LENGTH_SHORT).show();

我现在正在尝试循环通过一个大整数,就像这样

BigInteger y;
BigInteger yu = BigInteger.valueOf(17);
for(y= new BigInteger("96");y.compareTo(yu.add(y)) < 0;y=y.add(BigInteger.ONE)){
      Toast.makeText(getApplicationContext(),"y="+y,Toast.LENGTH_SHORT).show();



        }
只要应用程序还在运行,Log.cat就会继续记录55%的日志,有人知道这是为什么吗

感谢阅读:)

让我们一块一块地看一下:

  • GC\u FOR\u ALLOC
    意味着我们必须进行垃圾收集,因为没有空间进行您试图进行的分配
  • freed9202K
    意味着GC设法释放了大约9MB的RAM,这很好
  • 48%免费16294K/30792K
    意味着现在,大约一半的堆正在使用中。大约有14MB的可用堆空间
  • 暂停162ms
    表示线程必须等待0.162秒才能运行此垃圾收集
现在,你为什么看到所有这些

因为你在分配和扔掉很多东西。垃圾收集器一直释放的~9 MB内存?它们来自不再被引用的对象

我建议您在Android DDMS中使用“分配跟踪器”工具。它将显示您所有的分配,以及每个分配的位置。它应该可以帮助您追踪所有这些正在创建的垃圾对象的来源

但是,是的,正如关于这个问题的评论已经指出的那样:您的循环将永远进行下去,并且创建了许多BigInteger对象——因为每个
add()
调用都将分配一个新的BigInteger。由于它将永远存在,这些数字将变得相当大,也会增加每个BigInteger对象的大小


但说真的,试试“分配跟踪”工具。很高兴知道,你会更好地理解这里出了什么问题。

你认为你的for循环在做什么?@Kayaman你是什么意思?所以,你没有做
for(int i=0;i<17;i++)
为什么你把所有的术语都弄错了,并且毫无理由地使用
biginger
<0表示“y小于y+17”,这总是正确的,因此您创建了一个无限循环。你想做什么?说清楚:
9223372036854775807
长的限制。对于
int
循环变量,最大值为
2147483647
10-26 19:15:49.853 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9202K, 48% free 16294K/30792K, paused 162ms, total 162ms

10-26 19:15:50.923 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9530K, 52% free 14955K/30792K, paused 155ms, total 156ms

10-26 19:15:51.983 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9037K, 55% free 14110K/30792K, paused 146ms, total 147ms

10-26 19:15:53.018 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 8207K, 55% free 14094K/30792K, paused 141ms, total 141ms

10-26 19:15:54.068 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 8172K, 55% free 14114K/30792K, paused 143ms, total 143ms
10-26 19:15:49.853 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9202K, 48% free 16294K/30792K, paused 162ms, total 162ms
10-26 19:15:50.923 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9530K, 52% free 14955K/30792K, paused 155ms, total 156ms
10-26 19:15:51.983 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 9037K, 55% free 14110K/30792K, paused 146ms, total 147ms
10-26 19:15:53.018 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 8207K, 55% free 14094K/30792K, paused 141ms, total 141ms
10-26 19:15:54.068 5043-5043/everything.ofjd.com.everythingform D/dalvikvm: GC_FOR_ALLOC freed 8172K, 55% free 14114K/30792K, paused 143ms, total 143ms