【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください

いつもお世話になっております。

インターネットやテキストで調べてもわからず、
似たような質問が無いものかとこちらのほうでも検索したのですが、見当たらなかったため新たに質問させていただきます。

現在、エクセルVBAにてADOを使用し、ワークシートをテーブルに見立てて、SQLを発行しているのですが、その際に生成するレコードセットの開放が確認できず困っています。

もちろんclose及びnothingは行っています。
タスクマネージャーを確認しながら、当該のステップが実行された時点で、メモリが開放されるか見ていても、物理メモリの利用可能サイズは微動だにしません。レコードセットが生成された時点のままです。

どなたか、思い当たることがございましたら、回答いただけませんでしょうか?よろしくお願いいたします。

補足:WindowsXP、EXCEL XP、メモリ256、といった環境です。
   発行しているSQLはそれほどややこしくはありません。

A 回答 (2件)

ADOのみならず、


どんなコンポーネントでも
VBから起動すれば、
メモリを開放してくれません。

バグなのか、そういう仕様なのかは
当局は一切感知しておりません。

As New 宣言した場合は
起動時からメモリを消費しますし、
CreateObject時には
呼び出した瞬間から
メモリを消費します。
が!!!
開放はしません。
領域を確保しつづけるように
設計されてるからだと思いますが。
何故かって?
もう一度同じ容量食われたときに
メモリが足りなくなることを防ぐためさ…。
    • good
    • 0

ADODB.ConnectionにSetを発行する際、Newはつけていますか?



問題のEXCELを閉じる(終了)とメモリ解放されるなら、Nothingを宣言したオブジェクトの、さらに上位が犯人だと思います。

ハズしてたらごめんなさい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

EXCELを閉じるとメモリは解放されます。
ですが、ConnectionもRecordsetも生成時には、NEWをつけていますので、原因はそこではないかと思われます。

Public adoCONNECTION As ADODB.Connection
Set objADOConnect = New ADODB.Connection

Dim objADORS1 As ADODB.Recordset
Set objADORS1 = New ADODB.Recordset

といった具合です。

これらを踏まえた上で、思い当たる点はございますでしょうか?

お礼日時:2004/12/09 09:28

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報