• 締切済み

ガーベッジコレクタについて

hpskの回答

  • hpsk
  • ベストアンサー率40% (48/119)
回答No.5

理想的なごみ集めは, A:プログラム中で二度と参照されることのないオブジェクト を自動的に解放することなのですが,これを完璧にやるのは難しいので, 現状のごみ集めは基本的に B:プログラム中でどこからも指されていないオブジェクト を自動的に解放しているだけです.ちょっと考えればわかりますが 「BならばA」は正しいですが逆は成り立たず,AなのにBでない オブジェクトはメモリリークになります. なので,ごみ集めがメモリリークの根本的な解決になるわけではありません.(あったほうがリークが起こりにくいのは確かですが) 自動ごみ集めのもっと重要な価値は,プログラムの安全性を高めることにあります.Cでよくあるバグで,2つのポインタが同じオブジェクトを指していて,片方からfreeしたのに,それに気付かずにもう片方から参照してしまうということがよくあります.これはセキュリティ等からの観点からも問題なのですが,ごみ集めを備えた参照ベースの言語ではこういうことは起こりません.

関連するQ&A

  • コレクターズDVDとは?

    一般的にコレクターズDVDとは、 本編以外のシーンが追加されていたりするものだと思うのですが、 YAHOOオークションで次の様な記述があり、 ちょっと疑問に思いました。 違法コピーの販売と認識してよろしいのでしょうか? (1)プラケース・ジャケット付属 (2)メディア:国産有名DVD-R (3)コレクターズDVDを予めご理解頂いた上で入札して下さい。 (4)DVD-Rをサポートしている機種でご覧いただけます。 と出品の説明に書いてあります。 正規品であれば、国産有名DVDなんて説明はしないとおもうのですが...

  • Webアプリのメモリリーク

    Webアプリをjavaで開発しておりTomcat7を使用しています。 Windowsタスクマネージャーで tomcat7.exe のプロセスが使用するメモリを監視していたところ tomcat起動時には80Mほどの使用量なのですがWebアプリを使っているうちに150Mほどに 上昇します。 その後、使用し続けてもほとんど上昇しないのですがログアウトしてもメモリ使用量が150Mほど のままで変化がありません。 これはメモリリークしているのでしょうか。ログアウト時にはセッションはinvalidate()メソッドにて 無効化しています。 ログアウトすると初期の80Mほどにメモリ使用量が変化すると思っていたのですが まだ何かオブジェクトへの参照が残っているということでしょうか。30分ほど放っておけば ガーベッジコレクションされるのかと思ったのですがメモリ使用量が変わらなかったので ガーベッジコレクションされてるわけでもなさそうです

    • ベストアンサー
    • Java
  • トランジスタのコレクタ接地について

    こんにちは。トランジスタ初心者です。 勉強していて思ったのですが、なぜベース接地静特性、エミッタ接地 静特性はあるのにコレクタ接地静特性はないのでしょうか?以前にも このような質問が2件ほどあったようなのですが、その回答を見ても 納得できません。基本的に4つのhパラメータ(入力インピーダンス、 出力インピーダンス、電流増幅率、電圧帰還率)のおのおのに、静特性 のグラフが対応しているというふうに認識しています。実際に、 ベース接地のIe-Veb特性からはベース接地の入力インピーダンス ベース接地のIc-Vcb特性からはベース接地の出力アドミタンス ベース接地のIc-Ie特性からはベース接地の電流増幅率 ベース接地のVeb-Vcb特性からはベース接地の電圧帰還率 エミッタ接地のIb-Vbe特性からはエミッタ接地の入力インピーダンス エミッタ接地のIc-Vce特性からはエミッタ接地の出力アドミタンス エミッタ接地のIc-Ib特性からはエミッタ接地の電流増幅率 エミッタ接地のVce-Vbe特性からはエミッタ接地の電圧帰還率 がそれぞれ読み取れますよね?この8つに関しては参考書等で確認 できたのですが、これと全く同様に、 コレクタ接地のIb-Vbc特性からはコレクタ接地の入力インピーダンス コレクタ接地のIe-Vec特性からはコレクタ接地の出力アドミタンス コレクタ接地のIe-Ib特性からはコレクタ接地の電流増幅率 コレクタ接地のVec-Vbc特性からはコレクタ接地の電圧帰還率 が読み取れてもいいと思うのですが、なぜコレクタ接地のグラフは 存在しないのでしょうか? ためしに自分でこれらの特性を描こうと思っても、初心者ゆえに 全然イメージできませんでした。単純にエミッタ接地、ベース接地、 コレクタ接地の3つを同等に考えた場合、コレクタ接地の静特性の 存在を気にするのは自然な流れのような気がするのですが… 確かに、無くてもエミッタ接地hパラメータ等で計算できるので、問題 ないのはわかりますが、何かしっくりきません。 コレクタ接地だけ特別なのでしょうか? どなたでも是非回答をお願いします。

  • LeakTracer をshared Object のメモリリークチェックで使う方法は?

    Linux プログラミング(C++)初心者です。 ・目的 - SharedObjectのプログラミングを行っているのですが、メモリリークのチェックを行いたいです。 - LeakTracerを使おうとしています。 ・疑問 実際にLeakTracerを使ってみたのですが、SharedObject内のnew/deleteのTraceができません。どうしたらよいでしょうか? ・具体的に行っている方法 - 実行ファイル:hoge - hogeからLinkされているSharedObject:hage.so $ LeakCheck ./hoge で、吐き出されるleak.outをLeak-Analyzeに喰わせても何も出力されません(コンパイルオプション-gはつけています)。 なにが間違っているのでしょうか? もしくは、LeakTracerでなくともほかに良いSharedObjectのメモリリークチェック方法があれば教えていただければと思います。 よろしくお願いします。

  • PCのメモリは無名メーカーだと相性が悪い?

    PCのメモリを追加する際に無名メーカーだと相性が悪いという傾向がありますが、 メモリを装着し、BIOSが認識をして、OSが立ち上がった後でも、 メモリリークや動作が不安定などの症状をきたす場合はあるのでしょうか? BIOSが認識すればいいのであれば、安い無名メーカーでもいいのかなと思っております。

  • LinkedList使用時のメモリ管理について

    javaでLinkedListを使った場合、remove()した時にはC/C++のようなメモリの破棄(freeやdeleteのような)は行われるのでしょうか? それとも、行われるのはポインタの付け替えだけで、メモリの破棄は全てガーベッジコレクションに委ねられるのでしょうか?

  • c言語のメモリリークについての質問

    c言語のメモリリークについての質問 c言語初心者のため、メモリリークについて質問させていただければと存じます。 下記のコードで、 char* char_p = "char1"; char_p = "char2"; // ←メモリリーク? 2行目の部分は、 "char1"のメモリ領域が確保されたままで、解放できなくなってしまうので、 メモリリークを起こして問題な気がするのですが、実際はどうなのでしょうか? よろしくお願いいたします。

  • std::wstringのメモリリークについて教えてださい

    C++でプログラムを書いていたところメモリリークしているのを発見しました。 そこでなんとかメモリリークしている箇所を特定してみたのですが、なんとstd::wstringとstd::stringがメモリリークしているようです。 (UNICODEとマルチバイト文字に対応させるため両方でプログラムかいています) ローカル変数で関数さえ抜ければメモリからは消滅するはずのstd::wstringやstd::stringがメモリリークしているのは何か原因でもあるのでしょうか? よろしくおねがいします。

  • C言語のメモリリークに関して

    malloc()、calloc()等で確保した回数とそれをfreeした回数が等しければ、メモリリークが起きていないことを保障できますか? 回数が等しくてメモリリークが起きているとすればどんな原因が考えられるでしょうか?

  • OpenCV メモリリーク

    現在、OpenCVを勉強中の者です。 動画再生と顔認識を同時に行いたいのですが、メモリリークが発生してしま長時間稼動できません。問題点等があればご指摘ください。