dポイントプレゼントキャンペーン実施中!

VBでCreateObjectの直後に
Set xxx = Nothing
が入っているのですが、どうやら効いていないようなのです(メモリ使用量が増え続ける)。
高速で処理されている場合
Set xxx = Nothing
は効かないのでしょうか?。
教えて下さい。宜しくお願い致します。

A 回答 (8件)

いや、頼るも何も、勝手に答えるだけ。


わからなそうだったら、無口になる。

1.環境を書く。
2.たとえわからなくても、レスを返す。
   わからないなら、どのあたりがうまく行かないかの詳細を記す
3.普段から質問をきちんと締め切る。

そういう人には、何とか解決しようと、努力する。
そうじゃなければ、途中で投げ出す可能性大。

他の人だって同じ気持ちなんじゃないかな?

http://oshiete1.goo.ne.jp/kotaeru.php3?qid=582393
で名前を二人挙げているけど、ここの掲示板でツワモノが数人いるから、その人たちの方が心強いかも。
    • good
    • 0
この回答へのお礼

いろいろとありがとうございます。
上記の3点肝に命じときます。

お礼日時:2003/06/27 11:50

CreateObject と Nothing



これを使用すると、言わずと知れていると思いますが、
1.PCの空きメモリ領域調査
2.メモリの確保
3.開放

という処理をします。
それを1秒間隔でするとなると、メモリ確保でコケる可能性は大いにあります。
ロジックであっていようとも、コケるのは、Windowsの仕様です。

ちなみにWin98が出るときに、生放送でCNNに出演した、(自信満々の)ビルゲイ○氏の目の前で、PCがハングアップを起こしました。
OSを立ち上げただけです。

オブジェクトを開放しないで、生成したインスタンスを継承したままの方が、メモリリークしないかもしれません。
    • good
    • 0
この回答へのお礼

本当にありがとうございます。2chさんからご回答を頂き、自信が持てました。
いろいろ私の説明が至らなくてご迷惑をお掛けして申し訳ありませんでした。
まだテスト中なので、また何かありましたらご相談に乗って下さいね。
頼りにしていますので宜しくお願い致します。
こんな私に頼られると迷惑ですかね?。

お礼日時:2003/06/25 14:34

>1秒


それはタイマーが負荷を与えているだけだよ。

要検証:新規プロジェクトを起こして、単純なプログラムを作って、タイマがOSにどれだけ負荷をかけるか
    • good
    • 0
この回答へのお礼

ありがとうございます。
オブジェクト作成を初期処理にオブジェクト解放を終了処理に移動した結果、ハンドル数、メモリ使用量ともに増減が少なくなりました。当初から最終的にはこうしようと思っていたのですが、コーディング上問題が無い為調べておりました。簡単なプログラムを作成してDoo Loopの中にオブジェクト作成、解放を入れた時、外に出した時ではハンドル数、メモリ数とも大きな開きがありました。中に入れたときは38時間後にハンドルリークを起したぐらいです。外に出したときは大した増減もなく3日間流れました。
今は初期処理、終了処理に分けて1週間の稼動確認中です。

お礼日時:2003/06/25 11:45

オブジェクト変数なのですね。


レイトバインディングで、オブジェクトを生成しているなら、改善の余地はありません。

デバッグして確かめましたか?Nothingされているはずです。

メモリを消費が激しいのは、一つの処理がものすごく長いなど、他に原因がありませんか?
    • good
    • 0
この回答へのお礼

度々ありがとうございます。
ここの部分の処理は1秒に1度行われ、24時間稼動のシステムなのです。
他の原因も含めいろいろ調査してみます。

お礼日時:2003/06/25 10:47

>New 型では宣言していませんでした。


なら、どう宣言して、何をCreateObjectで作っているかがわからないと書かないと、書きようが無い。
    • good
    • 0
この回答へのお礼

大変失礼致しました。
Public xxx As Object
Set xxx = CreateObject("aaa.bbb")
Set xxx = Nothing
のように記述しています。

お礼日時:2003/06/23 11:33

参考URLを参照してみてください。



参考URL:http://homepage1.nifty.com/MADIA/vb/vb_bbs/20020 …
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。

お礼日時:2003/06/22 19:02

その宣言が


Dim 変数 as New 型

でNewで宣言しているからじゃないの?

New宣言は、お勧めしない。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=161004
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
New 型では宣言していませんでした。

お礼日時:2003/06/22 19:00

こんにちは。



どこかでトラップがかかって
Set…Nothingの行が読み飛ばされてるとか。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
読み飛ばしはありませんでした。

お礼日時:2003/06/22 18:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!