• 締切済み

GCのアクションイベント

メモリ不足でGCが起動したというイベントを 受け取りたいのですが そういった事は可能でしょうか 具体的にいうと プログラムが大量のキャッシュをメモリに持っていて メモリ不足になったらMEMORYOUTを起こす 前にキャッシュをクリアさせたいのです (GCのアクションを受け取ってクリアしたい) また GCにインスタンスを開放するように 直接インスタンスを渡す方法はないでしょうか 以上よろしくおねがいします

  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

> メモリ不足でGCが起動したというイベントを受け取りたい GC は、メモリ不足になったから起きるとは限りませんが、とりあえず、GC を きっかけにして何かの処理をやりたいのだったら、その処理を finalizer に 記述したクラスを new して、参照を持たないようにしておけば、捕まえられる んじゃないでしょうか? class 処理用のクラス { protected void finalize() throws Throwable { /* やりたい処理 */ new 処理用のクラス; /* 参照を持たないインスタンスを生成して次回に備える */ } } class メインのアプリケーション { public static void main(String args[]) { new 処理用のクラス; /* とりあえず、参照を持たないインスタンスを生成 */ /* 実際の処理 */ } } ってな感じで。インスタンスの開放と同時に finalizer が呼ばれる保証がない(はず) のが玉に傷ですが。 > GCにインスタンスを開放するように直接インスタンスを渡す方法はないでしょうか 参照されていないインスタンスが GC の対象になるわけですから、インスタンスを 参照している変数全てに null を代入すればいいでしょう。 即、GC を起動したいのであれば、System.gc() を使えば良いですね。 # 動作を確認したわけではないので、一応、自信無しとしておきます

関連するQ&A

  • イベント・ビューアのクリア方法は?

    プログラムから『イベント・ビューア』のログデータをクリア(消去)する方法を探っています。 イベント・ビューアには、『アプリケーション』、『セキュリティ』、『システム』の3つに 分かれていますよね。そして、メニューバーから『すべてのイベントを消去(C)』を選択すると 個々にクリアできます。 そこで質問します。 『アプリケーション』、『セキュリティ』、『システム』のログデータをそれぞれ個別に プログラム上で(自作ソフトに組み込むため)にクリアを行いたいと思っています。 ログデータはファイルなのか、レジストリ領域なのかすら分かりませんでした。 ですので何をどう削除すれば『クリア』出来るのかの情報をお持ちの方、知識を分けてくれませんか? また、プログラミング言語としては C/C++ 言語での方法を具体的に紹介(サイト・本・コメント)して くれると助かります。→VB も多少読み取るぐらいは出来ます。 質問内容は以上です。 よろしくお願いします。

  • マイクラpeについて

    最近のUpdateで0.13.2にしたらマイクラができません。 ブラック画面になってホーム画面に戻ります。対処方法はあるのでしょうか? 再起動とメモリ開放とキャッシュのクリアはしました。

  • 大量データの削除 再起動したくない

    大量にファイルを削除する場合、最初は速く削除されますが、だんだんそのスピードが遅くなります。 パソコンを再起動すれば、また、速く削除できるようになり、だんだん遅くなります。 再起動することなく、キャッシュ? メモリ?を開放?して、削除スピードを最初のように速くすることはできないのでしょうか?

  • PhotoshopCS3 アクションについて

    PhotoshopCS3を使って画像処理・作成をしたいと思っております。 【アクション】を使おうと思い、Adobeのサイトからダウンロードし実行すると 【レイヤー"Layer 1"は現在使用できません】 等とエラーが出て、結果的にはまったく違った画像ができてしまいます。 しかもこのエラーは大量に出て 【レイヤー"Layer 2"は現在使用できません】 【レイヤー"Layer 3"は現在使用できません】 【レイヤー"Layer 4"は現在使用できません】 と止め処ありません。 調べてみると 【Photoshopのフォルダ内[Required]~[tw10428.dat]を適当なフォルダーへ移動させれば良い】 と分かったのですが、具体的にどうしたらよいのか分かりません。 (実は"適当に"移動させてみましたが、Photoshop自体が起動しなくなってしまいました→元に戻したら起動しましたが。。。汗) また 【手動で、アクションの内容を書き変えれば良い】 と言う書き込みも見ましたが、どうしたら良いのか分かりません。 以上、お手数ですがご教示いただける方がいらっしゃったら 是非ともよろしくお願い致します!

  • Java インスタンス作成のイベント取得方法

    インスタンス化したことをイベントで取得することはできますか? 例) public class MyClass{ private MyDialog dialog = null; public void action(){ dialog = new MyDialog(); //ダイアログの中身の処理・・・(1) dialog.show(); } public MyDialog getDialog(){ return dialog; } } public class MyDialog extends JDialog{ (省略) } 前提 クラスMyClassの中身は変更することができない。 やりたいことは、MyClass#action()が呼ばれるたびに MyDialogにはってあるオブジェクトに命令を行いたい。 MyDialogのインスタンス作成イベントを取得できれば 上記を実現できると考えています。 以上です。

    • ベストアンサー
    • Java
  • アクション苦手だけどダージュオブケルベロスをやりたい・・・

    女です。アクションゲームが大の苦手で、RPG(ドラクエ・FF・メガテン)程度しかクリアする事が出来ていません。 今までいくつかアクションRPGなるものに手をつけましたが、武蔵伝・聖剣伝説3(2はクリア)・キングダムハーツ、全て途中で断念しました(TT)FF10-2のシューティングミッションとか、FF7の潜水艦ミッションとかスノーボードとかああいうのが大嫌いでした。 バイオハザードの一作目のみ根性で(それでもかなりヤバめで)クリアしました。 RPGはレベル上げとアイテム補充で何とか強敵でも乗り切れますが、アクションが入ると途中から敵の強さについていけなくなりどうも・・・そこで質問です。 (1)こんな私がダージュオブケルベロスをなんとか進めることはできそうでしょうか!?(汗) というのもFF7のかなりファンで、アドベントチルドレンもリミテッド版を買う程なのでどうしても続きが知りたくて・・・ (2)このゲームは、普通のRPGのようにどこか弱い敵が出るところでレベルをあげてHPをあげるとか、ポーションを大量に集めるとかで乗り切る事は可能でしょうか?(それならなんとかイケるかも・・・?) 以上、よろしくお願いします!

  • メモリのクリア

    XPを最適化するアプリ(いじくるツール)に、「プログラム起動用メモリを開放する」 という項目があったのですが、起動時に、メモリをクリアする作業が、デフォルト作業としてあるのでしょうか? なぜのような質問をするかというと、 ある操作をすると、起動します。。。 http://virus.okweb.ne.jp/kotaeru.php3?q=1484109 のように、メモリの動作状況が原因だと思うのですが、お気づきのことがございましたら、よろしくお願いいたします。

  • 使用メモリの開放

    アプレットにて動作するシステムを作成しているのですが、 システムを終了しても、IEを終了するまで使用メモリが開放されず 数回システムを起動すると「OutOfMemory」でフリーズしてしまいます。 システム終了時に「System.gc()」の命令は入れているのですが。 IEを終了せずにメモリを開放したいのですが、 何か良い方法はありませんか?

    • ベストアンサー
    • Java
  • オタク系のイベントを主催したいのですがどうすればいいでしょうか?

    現在、大学に通っているものなんですがなにもなく過ぎていく毎日に これはいかんと一念発起して行動を起こそうと思いたち、タイトルの様に考えたのですが具体的にどうすればいいかが良く分かりません。 イベントの中身としましてはよくあるみんなで盛り上がろう的なイベントではなく あちらの業界の人をお呼びして実際の仕事振りをお話いただいたり、 労働環境をお話いただいたりと言った就職を意識した内容にしていきたいのです。 他にも、現在のアニメ業界の抱える問題などを参加者が定義する事で知識の共有といったものも考えています。 もちろん、それだけだとなんなので上記を1部としてもう1部参加者の交流を図れるような通常のイベントも行いたいと考えています。 以上のような結構大掛かりなイベントを開催したいと思った時にどうこれからアクションをとっていくべきなんでしょうか? 自分はサークルに所属していないのでまず学内のオタク系サークルに所属して そこからいろいろと人を集めるっていうのも考えていますが どうにも自分の大学だとそういうことに熱心な人が少ない印象です。 となると、ネットを通じた広報活動になると思うんですが 今の自分にはブログ解説やニコニコ動画上での告知をかねたラジオ放送ぐらいしか思いつかなくて・・・ よろしければ、どうすればそういったイベントを開催できるようになるのか? また、どうすれば参加者・主催者の数を増やす事が出来るんでしょうか?

  • malloc でのメモリ取得状況の可視化

    Cで作成したWinXPで動くプログラムです。 malloc - free を繰り返して使っていると、どうもメモリが断片化するらしく、よくメモリ不足でエラーになります。free で開放したつもりで、開放できていないという可能性も否定できません。 そこで、メモリ確保状態を可視化できるツールなどありましたら紹介お願いします。 アプリのソースリストがありますので、可視化するプログラムを埋め込むことも可能です。そのようなライブラリのご紹介も歓迎です。 よろしくお願いいたします。