Heim  >  Fragen und Antworten  >  Hauptteil

Informationen zu Problemen bei der Java-Garbage-Collection

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?

为情所困为情所困2713 Tage vor741

Antworte allen(3)Ich werde antworten

  • 我想大声告诉你

    我想大声告诉你2017-05-17 10:00:29

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

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-17 10:00:29

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

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-05-17 10:00:29

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

    Antwort
    0
  • StornierenAntwort