タグ付けされた質問 「memory-leaks」

メモリリークは、プログラムが割り当てたメモリを解放できなかったが、使用しておらず、回復できない場合に発生します。


19
セレクターが不明であるため、performSelectorがリークを引き起こす可能性があります
ARCコンパイラから次の警告が表示されます。 "performSelector may cause a leak because its selector is unknown". これが私がやっていることです: [_controller performSelector:NSSelectorFromString(@"someMethod")]; なぜこの警告が出るのですか?セレクターが存在するかどうかをコンパイラーがチェックできないことを理解していますが、なぜリークが発生するのですか?そして、この警告を受け取らないようにコードを変更するにはどうすればよいですか?

30
「java.lang.OutOfMemoryError:PermGen space」エラーへの対処
最近、私のWebアプリケーションでこのエラーに遭遇しました: java.lang.OutOfMemoryError:PermGen space これは、Tomcat 6およびJDK 1.6で実行される典型的なHibernate / JPA + IceFaces / JSFアプリケーションです。どうやらこれは、アプリケーションを数回再デプロイした後に発生する可能性があります。 何が原因で、それを避けるために何ができますか?どうすれば問題を解決できますか?

30
アクティビティは、最初に追加されたウィンドウをリークしました
このエラーとは何ですか?なぜ発生するのですか? 05-17 18:24:57.069: ERROR/WindowManager(18850): Activity com.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here 05-17 18:24:57.069: ERROR/WindowManager(18850): android.view.WindowLeaked: Activity ccom.mypkg.myP has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44c46ff0 that was originally added here 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.ViewRoot.<init>(ViewRoot.java:231) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 05-17 18:24:57.069: ERROR/WindowManager(18850): at android.view.Window$LocalWindowManager.addView(Window.java:424) …

4
プライベートバイト、仮想バイト、ワーキングセットとは何ですか?
perfmon windowsユーティリティを使用して、プロセスのメモリリークをデバッグしようとしています。 これは、perfmonが用語を説明する方法です。 ワーキングセットは、このプロセスのワーキングセットの現在のサイズ(バイト単位)です。ワーキングセットは、プロセス内のスレッドによって最近アクセスされたメモリページのセットです。コンピュータの空きメモリがしきい値を超えている場合、ページは使用されていなくてもプロセスのワーキングセットに残ります。空きメモリがしきい値を下回ると、ページはワーキングセットから削除されます。それらが必要な場合、メインメモリを離れる前に、ワーキングセットにソフトフォールトされます。 仮想バイトは、プロセスが使用している仮想アドレス空間の現在のサイズ(バイト単位)です。仮想アドレス空間の使用は、ディスクまたはメインメモリページの対応する使用を必ずしも意味しません。仮想空間は有限であり、プロセスはライブラリをロードする能力を制限する可能性があります。 Private Bytesは、このプロセスが割り当てた、他のプロセスと共有できないメモリの現在のサイズ(バイト単位)です。 これらは私が持っている質問です: 共有ライブラリが関与していないためプロセスにリークがあるかどうかを確認するために測定する必要があるのはプライベートバイトですか?リークが発生した場合、プロセス自体から発生しますか? プロセスによって消費されるメモリの合計はどれくらいですか?それは仮想バイトですか、それとも仮想バイトとワーキングセットの合計ですか? プライベートバイト、ワーキングセット、仮想バイトの間に何か関係がありますか? メモリ使用量をよりよく把握できる他のツールはありますか?



1
(匿名)内部クラスを使用するのは正確にいつリーク安全ですか?
私はAndroidでのメモリリークに関する記事をいくつか読んでおり、この件に関するGoogle I / Oからのこの興味深いビデオを見ました。 それでも、概念を完全には理解していません。特に、Activity内の内部クラスをユーザーが安全または危険にさらす場合はそうです。 これは私が理解したことです: 内部クラスのインスタンスが外部クラス(アクティビティ)よりも長く存続すると、メモリリークが発生します。-> どのような状況でこれが起こりますか? この例では、拡張OnClickListenerする匿名クラスがアクティビティよりも長く存続する方法がないため、リークのリスクはないと思います。 final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.dialog_generic); Button okButton = (Button) dialog.findViewById(R.id.dialog_button_ok); TextView titleTv = (TextView) dialog.findViewById(R.id.dialog_generic_title); // *** Handle button click okButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); titleTv.setText("dialog title"); dialog.show(); さて、この例は危険ですか、なぜですか? // We are still …

7
このHandlerクラスは静的である必要があります。そうしないとリークが発生する可能性があります:IncomingHandler
サービス付きのAndroid 2.3.3アプリケーションを開発しています。メインアクティビティと通信するために、このサービスの内部にこれを持っています public class UDPListenerService extends Service { private static final String TAG = "UDPListenerService"; //private ThreadGroup myThreads = new ThreadGroup("UDPListenerServiceWorker"); private UDPListenerThread myThread; /** * Handler to communicate from WorkerThread to service. */ private Handler mServiceHandler; // Used to receive messages from the Activity final Messenger inMessenger = new …

5
Objective-Cの自動参照カウントはどのようなリークを防止または最小化しませんか?
MacおよびiOSプラットフォームでは、メモリリークは多くの場合、リリースされていないポインタが原因で発生します。従来、割り当て、コピー、保持をチェックして、それぞれに対応するリリースメッセージがあることを確認することが常に最も重要でした。 Xcode 4.2に付属しているツールチェーンでは、最新バージョンのLLVMコンパイラで自動参照カウント(ARC)が導入されています。これにより、コンパイラにデータをメモリ管理させることで、この問題を完全に回避できます。それはかなりクールであり、多くの不必要で平凡な開発時間を削減し、適切な保持/解放のバランスで簡単に修正できる多くの不注意なメモリリークを防ぎます。MacとiOSアプリでARCを有効にするときは、自動解放プールでさえ別の方法で管理する必要があります(独自NSAutoreleasePoolのをもう割り当てる必要がないため)。 しかし、他のどのメモリリークでも、私がまだ注意しなければならないことを妨げていませんか? おまけとして、Mac OS XとiOSのARCとMac OS Xのガベージコレクションの違いは何ですか?

30
メモリリークは大丈夫ですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 2年前休業。 この質問を改善する CまたはC ++アプリケーションでメモリリークが発生しても許容されますか? アプリケーションのコードの最後の行(たとえば、グローバルオブジェクトのデストラクタ)までメモリを割り当てて使用するとどうなるでしょうか。メモリ使用量が時間の経過とともに増加しない限り、アプリケーションが終了したときに(Windows、Mac、およびLinux)OSを信頼してメモリを解放してもよいですか?OSによって解放されるまでメモリが継続的に使用されていた場合、これを実際のメモリリークと見なしますか? サードパーティのライブラリがあなたにこの状況を強いた場合はどうなりますか?それがどれほど優れていても、サードパーティのライブラリの使用を拒否しますか? 実用上の欠点は1つだけです。つまり、これらの良性のリークは、メモリリーク検出ツールで誤検知として表示されます。
231 c++  c  memory-leaks 

18
可能性のあるEventEmitterメモリリークが検出されました
次の警告が表示されます。 (node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit. Trace: at EventEmitter.<anonymous> (events.js:139:15) at EventEmitter.<anonymous> (node.js:385:29) at Server.<anonymous> (server.js:20:17) at Server.emit (events.js:70:17) at HTTPParser.onIncoming (http.js:1514:12) at HTTPParser.onHeadersComplete (http.js:102:31) at Socket.ondata (http.js:1410:22) at TCP.onread (net.js:354:27) server.jsに次のようなコードを記述しました。 http.createServer( function (req, res) { ... }).listen(3013); これを修正するには?


30
Windowsに代わる優れたValgrindはありますか?
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 Linux専用であることがわかったとき、Cコーディング/デバッグを改善するためにValgrindを調査していました。OSをLinuxに移行することに他に必要も関心もないため、Windowsにも同等に優れたプログラムがあるかどうか疑問に思いました。

1
AngularJS-$ destroyはイベントリスナーを削除しますか?
https://docs.angularjs.org/guide/directive このイベントをリッスンすることで、メモリリークを引き起こす可能性のあるイベントリスナーを削除できます。スコープと要素に登録されたリスナーは、破棄されるときに自動的にクリーンアップされますが、サービスにリスナーを登録した場合、または削除されていないDOMノードにリスナーを登録した場合は、自分でクリーンアップするか、メモリリークが発生するリスクがあります。 ベストプラクティス:ディレクティブは自分自身でクリーンアップする必要があります。element.on( '$ destroy'、...)またはscope。$ on( '$ destroy'、...)を使用して、ディレクティブが削除されたときにクリーンアップ関数を実行できます。 質問: 私はelement.on "click", (event) ->私のディレクティブの中にあります: ディレクティブが破棄されると、element.onガベージコレクションされないようにするためのへのメモリ参照はありますか? Angularドキュメントには、ハンドラーを使用して、発行されたイベントのイベントリスナーを削除する必要があると記載$destroyされています。destroy()イベントリスナーを削除したような印象を受けましたが、そうではありませんか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.