日期:2014-05-20  浏览次数:20579 次

java基础的一个小疑惑
请问 for(;;){}

java会启动gc吗????????????

------解决方案--------------------
只能说gc一直在监控,其他不一定。。。
------解决方案--------------------
gc不是java中的垃圾回收器么?!应该就不会启动吧?!
------解决方案--------------------
启动GC的定义是什么?是指负责GC的线程?还是指一次GC动作?

如果指GC线程的话从JVM运行开始就已经启动了;而GC动作则要视情况而定,一般来说如果内存充裕,并不会随意启动回收内存的动作,因为回收内存也要消耗不少CPU,甚至停止所有线程。

楼主你写了个空的死循环,如果在单线程程序中的话,一般来说就不会执行GC动作,因为没有内存变化;如果是多线程程序中的话,那仍然随时会有GC动作,因为其它线程可能申请和释放了内存。
------解决方案--------------------
这不是个死循环··· 学习了···
------解决方案--------------------
gc是一直在运行的,运行一段时间会触发gc回收。循环体虽然是空的,可是并不代表内存里面是没实例的。
------解决方案--------------------
感觉没看研究过GC,关心这个很无聊。
------解决方案--------------------
触发gc的条件不是标准,不是标准的问题,就很难有标准答案。

而且你进入一个死循环了。这个过程又不会多耗费堆内存,触发gc是不太可能了。
------解决方案--------------------
探讨

启动GC的定义是什么?是指负责GC的线程?还是指一次GC动作?

如果指GC线程的话从JVM运行开始就已经启动了;而GC动作则要视情况而定,一般来说如果内存充裕,并不会随意启动回收内存的动作,因为回收内存也要消耗不少CPU,甚至停止所有线程。

楼主你写了个空的死循环,如果在单线程程序中的话,一般来说就不会执行GC动作,因为没有内存变化;如果是多线程程序中的话,那仍然随时会有GC动作,因……

------解决方案--------------------
探讨
请问 for(;;){}

java会启动gc吗????????????