我读到了无限循环,并发现在某些语言中它会在堆栈溢出或达到分配的最大内存时停止.其他人将永远循环,具体取决于程序和语言的类型.
我的问题是,java无限循环停止吗?我只是好奇,因为java有一个垃圾收集器,当内存泄漏时,如果达到分配的最大内存和堆栈溢出,则重用内存.
我的问题是,java无限循环停止吗?我只是好奇,因为java有一个垃圾收集器,当内存泄漏时,如果达到分配的最大内存和堆栈溢出,则重用内存.
此外,这种无限循环会停止吗?
for( ; ; ){}
解决方法
My question is,do java infinite loops stop?
有些人有,有些则没有.这取决于循环的实现方式.
基本上,您确定在其他语言中停止的情况也可以在Java中停止…取决于您如何编码它们.
>通过无限递归实现的循环将发生堆栈溢出.这在Java中比在某些语言中更容易“实现”. (无尾调用优化.)
>如果循环重复分配仍然可以访问的对象,则会发生堆溢出…因此GC无法回收它们.
(还有各种其他方式可以看似无限循环终止.)
I’m just curIoUs because java has a garbage collector,that reuse memory when there’s memory leak in case of reaching allotted maximum memory and stack overflow.
垃圾收集器回收无法访问的对象,但无法回收可到达的对象(即程序将来可能使用的对象).
垃圾收集器不处理堆栈内存,因此它与堆栈溢出失败无关.
Also,will this kind of infinite loop stop?
没有.
严格来说,任何循环都不是无限的,如果它因任何原因停止……这包括堆栈溢出或内存耗尽等原因.
但即使是无限循环也不是真正的无限.最终用户将杀死循环程序,电源将失败,硬件将被废弃……或类似的东西.