Informationen zu Problemen bei der Java-Garbage-Collection
为情所困
为情所困 2017-05-17 09:58:29
0
3
768

Werden die Variablen in der Schleife nach jeder Schleife recycelt?

Zum Beispiel

  for (int i=0;i<1000000;i++){
      Date date=new Date();
   }
   

Dieses Datum ist nicht referenziert. Wird es im Müll abgeholt? Was passiert, wenn auf das erstellte Objekt verwiesen wird?

为情所困
为情所困

Antworte allen(3)
我想大声告诉你

java的GC有YGC和FGC。
你这里没有被引用的date对象一定会被回收,但不是在每次循环结束后。
GC的时机和你的代码执行没有必然联系。
相关知识,你可以baidu下java GC

过去多啦不再A梦

这个问题的答案在于,jvm的垃圾回收机制在什么情况下会进行垃圾回收。
局部变量的作用于是{},也就是说,date没有被引用了,当执行垃圾回收动作的时候,这里的date就会被回收。

習慣沉默

new一个对象,那么就是存放在堆中,而且刚创建的对象存放在eden区中,只有当eden区满了,才会触发Monitor GC进行回收。
你可以在运行参数中添加-XX:+PrintGCDetails观察GC回收的情况。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage