2017-11-27 1 views
3

またはSystem.gc()を、アプリケーションクラスのonLowMemory()メソッドの実動コードでメモリを消去する(手動ガーベジコレクション)に使用する必要がありますか?onLowMemoryメソッドでRuntime.gc()を呼び出す

+1

いいえ、原因の低いメモリ上のシステムは、すでにGCしようとした、あなたはAesSedai101質問@代わりに –

+1

をリソースをクリアする必要があり、彼はそれらのいずれかを呼び出す必要があるかどうかではなく、これ。 – EJP

+0

@ hemant-parmar誤解して申し訳ありませんが、私はRuntime.gc()(またはSystem.gc())を 'onLowMemory()'で使うべきかどうかを尋ねるつもりでした。 –

答えて

0

メモリクリアのためには、両方のonLowMemory()

内側両方が同じで呼び出すことができます。 System.gc()Runtime.gc()と事実上同等です。 System.gc()は内部でRuntime.gc()を呼び出します。

差異はSystem.gc()は、Runtime.gc()がインスタンスメソッドであるクラスメソッドです。だから、System.gc()がより便利です。

あなたはそれを手に入れようと思います。 Javadocのから

+0

また、 'System.gc()'を呼び出すと 'for(int i = 0; i <10; i ++){System.gc();と異なる結果が得られます。 } 'はします... – Shark

2

番号:

あなたは、あなたが上に保持することができる任意のキャッシュや他の不要なリソースを解放するために、このメソッドを実装する必要があります。このメソッドから戻った後、システムはガベージコレクションを実行します。

5

System.gc()は、手作業でgcを使用する意味ではありませんが、ごみを拭き取るためのヒントです。 Objectfinalize()のようなこのメソッドを使用しない方が良いでしょう。どちらも保証はありません。 javadocのApplicationでは、システムはこのメソッドから戻ってgcを実行し、適切な方法でそれを実行するように指定されていると述べました。

あなたが保持しているかもしれない不要なキャッシュやその他のキャッシュを解放するには、このメソッドを実装する必要があります。このメソッドから返された後、システムは あなたのためにガベージコレクションを実行します。

Application javadoc

あなたは、このメソッドからの復帰後onLowMemory()方法でSystem.gc()を使用するときに、別のガベージコレクションの努力になります。 javadocのヒントから、キャッシュへのリンクが失われているのは、例えばList<Object> bigCache = null;です。メソッドの終了は、キャッシュリストを取得してメモリを解放するガベージコレクションになります。

関連する問題