タグ付けされた質問 「garbage-collection」

ガベージコレクション(GC)は、自動メモリ管理の一種であり、ガベージ、またはプログラムで使用されなくなったオブジェクトによって占有されているメモリを再利用しようとします。

4
イベントハンドラーはガベージコレクションの発生を停止しますか?
次のコードがある場合: MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass = null; pClassはガベージコレクションされますか?それとも、イベントが発生するたびにイベントを発生させ続けますか?ガベージコレクションを許可するには、次のことを行う必要がありますか? MyClass pClass = new MyClass(); pClass.MyEvent += MyFunction; pClass.MyEvent -= MyFunction; pClass = null;

2
.NETのガベージコレクションについて
以下のコードを考えてみましょう: public class Class1 { public static int c; ~Class1() { c++; } } public class Class2 { public static void Main() { { var c1=new Class1(); //c1=null; // If this line is not commented out, at the Console.WriteLine call, it prints 1. } GC.Collect(); GC.WaitForPendingFinalizers(); Console.WriteLine(Class1.c); // prints 0 …

6
JavaScriptクロージャがガベージコレクションされる方法
私は次のChromeバグをログに記録しました。これにより、コードに重大で明白でない多くのメモリリークが発生しました。 (これらの結果は、GCを実行するChrome Dev Toolsのメモリプロファイラを使用してから、収集されたガベージングされていないものすべてのヒープスナップショットを取得します。) 以下のコードでは、someClassインスタンスはガベージコレクションされています(良好)。 var someClass = function() {}; function f() { var some = new someClass(); return function() {}; } window.f_ = f(); ただし、この場合はガベージコレクションされません(不良)。 var someClass = function() {}; function f() { var some = new someClass(); function unreachable() { some; } return function() {}; } window.f_ = …

11
:java.util.concurrent.TimeoutExceptionを処理する方法:android.os.BinderProxy.finalize()が10秒のエラー後にタイムアウトしましたか?
私たちは多くの見ているTimeoutExceptions中をGcWatcher.finalize, BinderProxy.finalize、そしてPlainSocketImpl.finalize。それらの90%以上がAndroid 4.3で発生します。Crittercismから、フィールド外のユーザーからこれに関するレポートを受け取っています。 エラーは次のバリエーションです: " com.android.internal.BinderInternal$GcWatcher.finalize() timed out after 10 seconds" java.util.concurrent.TimeoutException: android.os.BinderProxy.finalize() timed out after 10 seconds at android.os.BinderProxy.destroy(Native Method) at android.os.BinderProxy.finalize(Binder.java:459) at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:187) at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:170) at java.lang.Thread.run(Thread.java:841) これまでのところ、問題を社内で再現したり、原因を突き止めたりすることはできませんでした。 これを引き起こす可能性のあるアイデアはありますか?これをデバッグして、アプリのどの部分がこれを引き起こしているのかを知る方法はありますか?問題に光を当てるものは何でも役立ちます。 その他のスタックトレース: 1 android.os.BinderProxy.destroy 2 android.os.BinderProxy.finalize Binder.java, line 482 3 java.lang.Daemons$FinalizerDaemon.doFinalize Daemons.java, line 187 4 java.lang.Daemons$FinalizerDaemon.run Daemons.java, line 170 5 …

24
GC.Collectの呼び出しはいつ受け入れられますか?
一般的なアドバイスはGC.Collect、コードから呼び出すべきではないということですが、このルールの例外は何ですか? ガベージコレクションを強制することが理にかなっている非常に特殊なケースをいくつかしか考えられません。 思い浮かぶ1つの例は、一定の間隔で目を覚まし、いくつかのタスクを実行し、その後長時間スリープするサービスです。この場合、まもなくアイドルになるプロセスが必要以上のメモリを保持しないように収集を強制することをお勧めします。 他に電話しても問題ない場合はありますGC.Collectか?

8
Java Garbage Collectionは循環参照とどのように連携しますか?
私の理解では、Javaのガベージコレクションは、他のオブジェクトがそのオブジェクトを「指し示していない」場合、一部のオブジェクトをクリーンアップします。 私の質問は、次のようなものがあればどうなるかです。 class Node { public object value; public Node next; public Node(object o, Node n) { value = 0; next = n;} } //...some code { Node a = new Node("a", null), b = new Node("b", a), c = new Node("c", b); a.next = c; } //end of scope …

9
C ++のスタック、静的、およびヒープ
私は検索しましたが、これらの3つの概念をよく理解していません。動的割り当て(ヒープ内)を使用する必要があるのはいつですか?その実際の利点は何ですか?静的およびスタックの問題は何ですか?ヒープに変数を割り当てずにアプリケーション全体を作成できますか? 他の言語には「ガベージコレクター」が組み込まれているので、メモリを気にする必要はありません。ガベージコレクターは何をしますか? このガベージコレクタを使用して実行できなかったメモリを自分で操作するにはどうすればよいでしょうか。 誰かがこの宣言でそれを私に言ったら: int * asafe=new int; 「ポインタへのポインタ」があります。どういう意味ですか?それは次の点で異なります。 asafe=new int; ?

6
ファイルを明示的に閉じることは重要ですか?
Pythonでは、を呼び出さずにファイルを開くか、ファイルをclose()閉じてtry- finallyまたは " with"ステートメントを使用しない場合、これは問題ですか?それとも、すべてのファイルを閉じるためにPythonガベージコレクションに依存するコーディングプラクティスとして十分ですか?たとえば、これを行う場合: for line in open("filename"): # ... do stuff ... ...これはファイルを閉じることができず、ファイルを閉じるのを妨げる例外が発生する可能性があるため、これは問題ですか?またはfor、ファイルが範囲外になるため、ステートメントの最後に確実に閉じられますか?


8
IDisposableを正しく実装する
私のクラスでは、IDisposableを次のように実装します。 public class User : IDisposable { public int id { get; protected set; } public string name { get; protected set; } public string pass { get; protected set; } public User(int UserID) { id = UserID; } public User(string Username, string Password) { name = Username; pass = …

7
どのようにしてIDisposableがすべてのクラスに広がるのを防ぎますか?
これらの単純なクラスから始めます... 次のような単純なクラスのセットがあるとします。 class Bus { Driver busDriver = new Driver(); } class Driver { Shoe[] shoes = { new Shoe(), new Shoe() }; } class Shoe { Shoelace lace = new Shoelace(); } class Shoelace { bool tied = false; } AにBusはがありDriver、にDriverは2つShoeのがあり、それぞれにShoeがありShoelaceます。すべて非常にばかげています。 IDisposableオブジェクトをShoelaceに追加する 後で、上のいくつかの操作をShoelaceマルチスレッド化できると判断したのでEventWaitHandle、スレッドが通信するためのを追加します。したがってShoelace、次のようになります。 class Shoelace { private AutoResetEvent waitHandle …

1
Pythonガベージコレクターのドキュメント[終了]
閉まっている。この質問はスタックオーバーフローのガイドラインを満たしていません。現在、回答を受け付けていません。 この質問を改善してみませんか?Stack Overflowのトピックとなるように質問を更新します。 5年前休業。 この質問を改善する 私はpythonガベージコレクションがどのように機能するかを詳細に説明しているドキュメントを探しています。 どのステップで何が行われるのか興味があります。これらの3つのコレクションにはどのようなオブジェクトがありますか?各ステップでどのような種類のオブジェクトが削除されますか?参照サイクルを見つけるためにどのアルゴリズムが使用されますか? 背景:短時間で終了する必要がある検索を実装しています。ガベージコレクターが最も古い世代の収集を開始すると、他の場合よりも「はるかに」遅くなります。検索用のものよりも時間がかかりました。最も古い世代がいつ収集されるか、またどのくらいの時間がかかるかを予測する方法を探しています。 最も古い世代を収集する際に予測することは容易であるget_count()とget_threshold()。これもで操作できますset_threshold()。しかしcollect()、無理に作ったり、スケジュールされたコレクションを待つ方が、どれほど簡単に決定できるかわかりません。

5
Haskellプログラムでのガベージコレクションの一時停止時間の削減
「メッセージ」を受信して​​転送するプログラムを開発していますが、メッセージの一時的な履歴を保持しているので、要求に応じてメッセージの履歴を伝えることができます。メッセージは数値で識別され、通常は約1キロバイトのサイズであり、数十万のメッセージを保持する必要があります。 このプログラムを遅延に対して最適化したいと思います。メッセージの送信と受信の間の時間は10ミリ秒未満でなければなりません。 プログラムはHaskellで書かれており、GHCでコンパイルされています。ただし、ガベージコレクションの一時停止は、待機時間の要件に対して長すぎることがわかりました。実際のプログラムでは100ミリ秒を超えています。 次のプログラムは、アプリケーションの簡易バージョンです。Data.Map.Strictメッセージの保存にを使用します。メッセージはでByteString識別されますInt。1,000,000メッセージは昇順で挿入され、最も古いメッセージは継続的に削除されて履歴が最大200,000メッセージに保たれます。 module Main (main) where import qualified Control.Exception as Exception import qualified Control.Monad as Monad import qualified Data.ByteString as ByteString import qualified Data.Map.Strict as Map data Msg = Msg !Int !ByteString.ByteString type Chan = Map.Map Int ByteString.ByteString message :: Int -> Msg message n = Msg n …

3
Java GC(割り当て失敗)
なぜ「GC(割り当て失敗)」なのですか? linux-amd64 JRE(1.8.0_25 -b17)用のJava HotSpot(TM)64ビットサーバーVM(25.25- b02)、 CommandLine flags: -XX:CMSInitiatingOccupancyFraction=60 -XX:GCLogFileSize=10485760 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=32212254720 -XX:MaxHeapSize=32212254720 -XX:NewRatio=10 -XX:OldPLABSize=16 -XX:ParallelGCThreads=4 -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintStringTableStatistics -XX:+PrintTenuringDistribution -XX:StringTableSize=1000003 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=50 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 27.329: [GC (Allocation Failure) 27.329: [ParNew Desired survivor size 44728320 bytes, new threshold 15 (max 15) - age 1: 16885304 bytes, 16885304 …

4
「git gui」を実行するときに「Loose Object」ポップアップをスキップする方法
「git gui」を実行すると、次のようなポップアップが表示されます このリポジトリには現在約1500個のルーズオブジェクトがあります。 次に、データベースの圧縮を提案します。これは以前に行ったことがあり、ルーズオブジェクトを約250に減らしますが、ポップアップを抑制しません。再度圧縮しても、ゆるいオブジェクトの数は変わりません。 現在のワークフローでは、Perforceから移行しているため、「rebase」を大幅に使用する必要があり、Perforceは標準的なSCMのままです。Gitが正規のSCMになると、定期的なマージが行われ、ルーズオブジェクトの問題は大幅に軽減されます。 それまでの間、この「役立つ」ポップアップを廃止したいと思います。

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