2016-06-26 17 views
0

私はちょうどインタビューを受けました。Javaでメモリリークが発生する可能性があるかどうか尋ねられました。私は答えを知らなかった。だから私は知りたいです:Javaでメモリリークが発生する可能性はありますか?

  • どのように可能ですか?
  • どのような例ですか?
  • Javaがガベージコレクションを使用していてもまだ可能ですか?

答えて

3

広範な意味で、メモリリークは、もはや必要のなくなった使用済みメモリを保持し続ける状況です。 LEAKリストは、反復ごとに成長しているし、それを解放する方法はありません、まだそれを使用したことがないです

public class LeakingClass { 
    private static final List<String> LEAK = new ArrayList<>(); 

    public static void main(String[] args) { 
     Scanner in = new Scanner(System.in); 
     System.out.println("What is your name? "); 
     while (in.hasNext()) { 
      name = in.next(); 
      System.out.println("Hi " + name); 
      LEAK.add(name); 
      System.out.println("What is your name? "); 
     } 
    } 
} 

は、以下の[確かに人工]の例を考えてみましょう。これはリークです。

+0

なぜユーザー入力が必要ですか? 'LEAK.add(" str ");' while(true) 'は –

+1

@sharonbnで十分です。この例はちょっと美味しそうでしたが、最終的には特別なことは何もなく、ガゼリオンの異なる例があります。 – Mureinik

+0

true、true ..... –

関連する問題