C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C# AxWebBrowserのメモリ開放について


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■63759 / inTopicNo.1)  C# AxWebBrowserのメモリ開放について
  
□投稿者/ ※ (1回)-(2012/10/05(Fri) 18:43:19)

分類:[C#] 

2012/10/05(Fri) 22:07:04 編集(投稿者)
2012/10/05(Fri) 21:17:34 編集(投稿者)
2012/10/05(Fri) 21:15:34 編集(投稿者)

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

AxWebBrowserについてご質問させて下さい。

親クラスの呼び出し時にAxWebBrowser付きのフォームを作成し、
以降フォームを殺さずに再起してxWebBrowserを使いまわし、
必要な時だけWebサイトにアクセスするプログラムを作成中です。

そこで問題の部分なのですが、
AxWebBrowserを使えば使うほど
物理メモリ、仮想メモリの使用量が増加してしまい、
最終的にはメモリオーバーでアプリケーションフリーズしてしまいます。
フォームをCloseしてもGC.Collectしてもメモリは開放されません。
フォーム内の変数等の作成をフォームのInitializeに回しても駄目でした。
使いまわすのでDisposeは出来ません。
(Disposeするバージョンを作っても結果は同じでした。)

AxWebBrowserの物理メモリを開放するにはどうすれば良いのでしょうか。
ご教授をお願い致します。



追記です。

アクセスするWebサイトをGoogleトップページに差し替えたところ、
メモリ消費の増加が止まりました。

となるとサイト側に問題があるのでしょうか。

iframeの有無くらいしか目だった違いはありませんが・・・
引用返信 編集キー/
■63760 / inTopicNo.2)  Re[1]: C# AxWebBrowserのメモリ開放について
□投稿者/ Azulean (46回)-(2012/10/06(Sat) 09:48:34)
No63759 (※ さん) に返信
> AxWebBrowserを使えば使うほど
> 物理メモリ、仮想メモリの使用量が増加してしまい、
> 最終的にはメモリオーバーでアプリケーションフリーズしてしまいます。
> フォームをCloseしてもGC.Collectしてもメモリは開放されません。
> フォーム内の変数等の作成をフォームのInitializeに回しても駄目でした。
> 使いまわすのでDisposeは出来ません。
> (Disposeするバージョンを作っても結果は同じでした。)

GC.Collect はあくまで、マネージメモリで使われていないメモリの回収とお考えください。
使われているメモリやリークしているアンマネージメモリについては何も起きません。


> AxWebBrowserの物理メモリを開放するにはどうすれば良いのでしょうか。
> ご教授をお願い致します。

仮に、リークしている場合は、プロセスを再起動するしか手立てはありません。
リークしていないのであれば、何か手はあるかもしれませんが…、すみません、私は心当たりがありません。


ところで、なぜ AxWebBrowser なのでしょうか?
.NET にも WebBrowser コントロールはありますが…。(同じようにメモリリークするかもしれません)
引用返信 編集キー/
■63761 / inTopicNo.3)  Re[2]: C# AxWebBrowserのメモリ開放について
□投稿者/ ※ (3回)-(2012/10/06(Sat) 11:19:44)
No63760 (Azulean さん) に返信

ご返答ありがとう御座います。

> 仮に、リークしている場合は、プロセスを再起動するしか手立てはありません。

AxWebBrowserのフォームを終了しても開放されないので、
アプリケーションごと再起動するしかないですね。
いっそブラウザ用のアプリケーションを作って毎度呼び出し→終了するとか・・・。


> ところで、なぜ AxWebBrowser なのでしょうか?
> .NET にも WebBrowser コントロールはありますが…。(同じようにメモリリークするかもしれません)

開発初期にAxWebBrowserとWebBrowserの違いが分からず、
触りやすかったAxWebBrowserを使い続けている状態です。

試しに一度WebBrowserバージョンを作ってみようと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -