【发布时间】:2013-09-22 14:59:14
【问题描述】:
我阅读了有关无限循环的信息,发现在某些语言中,它会在堆栈溢出或达到分配的最大内存时停止。其他人将永远循环,具体取决于程序和语言的类型。 我的问题是,java无限循环会停止吗?我只是好奇,因为 java 有一个垃圾收集器,它可以在内存泄漏时重用内存,以防达到分配的最大内存和堆栈溢出。
还有,这种无限循环会停止吗?
for( ; ; ){}
【问题讨论】:
-
这永远不会停止,无限循环将停止的唯一时间是它正在泄漏内存或进行某种递归。希望其他人能给你一个更彻底的答案
-
这个循环不会停止,因为它从一开始就永远不会开始。 Java的优化编译器会看到循环不起作用,没有副作用,并消除死代码。
-
当时间用完时它们会停止 :) 或者进程被杀死。
-
@Andrew Bissell - 当我尝试这个时,Eclipse 和 JRE 在循环后都给了我一个关于无法访问代码的错误。如果循环之后没有代码,它仍然会执行并且永远不会超过它。
-
@AndrewBissell 好吧,如果你声明像
boolean run = true这样的变量并使用while(run) { }它会通过,因为它可以被其他线程更改,但如果没有更改,你会得到一个无限循环.
标签: java algorithm loops for-loop garbage-collection