- - PR -
メモリの解放をしたい。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-27 10:18
いろいろとありがとうございます。
今回の件ですが、次の3つの部分でイメージしてもらえればと思います。 UI部:VB 2005 で作成、メモリは数十M程度利用 処理1:VB 2005 で作成、メモリは搭載メモリのほとんどを利用 処理2:exe で存在。メモリは搭載メモリのほとんどを利用 このような状態ですので、処理1で使用したメモリを解放しないと、 処理2でメモリを確保すると、メモリが不足して大変な状態になってしまいます。 それで、当初のような質問とさせていただきました。 そして、いろいろとアドバイスをいただいた結果、処理1を別 exe とすることに いたしました。 | ||||||||
|
投稿日時: 2007-12-27 10:29
もうクローズしているようなので、いいんですけど、そもそもそんな大量のメモリを必要とする処理って一体。。。
#少し気になるというか興味が。 #適切な処理分割ができないものなんでしょーか? | ||||||||
|
投稿日時: 2007-12-27 11:33
なんじゃそりゃ。 「外部のプログラム」って、同一プログラムのことだったのか。 なんと紛らわしい。 | ||||||||
|
投稿日時: 2007-12-27 12:18
紛らわしいというか事実と異なるって感じですな。ひどりさんカワイソスw ぶっちゃけメモリ食う処理をネイティブなC/C++であつかったら?って気がする。 俺は画像処理関係はそうしている。C/C++でしか使えないものも多いし。 | ||||||||
|
投稿日時: 2007-12-27 12:36
ん?最初の投稿に出てくる外部のプログラムは処理2のことじゃないですか? <<当初の構成>> ○プログラムA UI部:VB 2005 で作成、メモリは数十M程度利用 処理1:VB 2005 で作成、メモリは搭載メモリのほとんどを利用 ○プログラムB 処理2:exe で存在。メモリは搭載メモリのほとんどを利用 (1)プログラムA→プログラムB のように呼び出し ↓ <<本スレで辿り着いたスレ主の結論を踏まえた変更後>> ○プログラムA UI部:VB 2005 で作成、メモリは数十M程度利用 ○プログラムA' 処理1:VB 2005 で作成、メモリは搭載メモリのほとんどを利用 ○プログラムB 処理2:exe で存在。メモリは搭載メモリのほとんどを利用 (1)プログラムA→プログラムA' (2)プログラムA→プログラムB のように呼び出し のように私は理解しました。 | ||||||||
|
投稿日時: 2007-12-27 13:08
るぱんです
真横ですいません。 Set ○○ = Nothing って一文で何とかなるって理解で合ってます? XMLとか解析したりすると、これでたいていはかたがついたのですが・・・。汗 | ||||||||
|
投稿日時: 2007-12-27 13:47
実用上、それでオッケーな場合は多いですが、厳密には「それで万全」である保証はありません。 すべての参照を失ったクラスインスタンスはGC対象となり得ます。 ですが、参照を失った瞬間にただちにGCが実行されるわけではありません=インスタンスを構成するのに利用されていたメモリがすぐに別の用途に使える保証はありません。 GCがメモリを再利用可能な状態に戻すペースよりも速く、新たなメモリ確保が必要となるシナリオでは、OutOfMemory 例外が発生する可能性があります。 そういう状況が起こりえるほどのペースで大量のメモリを消費する場合、設計・開発段階から綿密な計画と計測を行いながら調整しておかないと、現場で泣きを見ることになります。 今なら、64bit OS に移行してしまう、というのも手だと思います。 | ||||||||
|
投稿日時: 2007-12-27 14:05
僕も CLR のメモリ管理についてはぜんぜん詳しくないというかわからないんですけども。
ちょっと僕の理解を書き出してみますね。
で、スレ主は +++ の部分をどうにかして空けることはできないの?という ことを言っているのだと思っていました。 .NET が専有するんじゃなくて、OS に返還できへんの?と。 なので、Jitta さんの「メモリ クリーナーとか以下略」はそういうことを 指しているのだ、と思ってたんです。 なにかしら間違ったことを書いているような気がうすうすとしてくるわけ ですが、あくまで「スレ主がこう思ってるんじゃないか」的な僕の勝手な 想像です。気持ちはわからないでもないですが。 個人的には上記のような状態になったとしても、メモリをガンガン確保する プロセスがいたら +++ の部分も解放されるんじゃないのかなと思ってたの だけど、違うのかしら。メモリクリーナーとかってそういう原理なのじゃ ないかな?と。 # この辺も僕のつたない知識でしゃべっているのでお気になさらぬよう。 # でも変なこと言ってたら見てる人を混乱させるといけないのでツッコミ歓迎 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |