- - PR -
Windows98seでブルースクリーン
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-01 19:33
Windows2000sp4上で、vb.netによる開発を行っています。
処理中に多数のコントロール作成(200〜300程度のラベルなど)を行う処理を 行っているのですが、ビルドしたexeを、Windows98se上で動作させると、 処理中にマシンごとフリーズ、もしくはブルースクリーンになり、 再起動を余儀なくされます。 必ず○○○をしたら起こる、などではなく、 ランダムに発生しているように見えます。 Windows2000(開発環境)では全く発生しません。 これはOSの問題でしょうか? または、メモリ搭載量などが影響しているのでしょうか…? 数台のWin98SEマシンで動作を行ってみたのですが、 すべて同様の症状なのです。 ちなみに、それぞれの環境は、以下のようになります。 <開発> Windows2000 sp4 メモリ 512メガ <実行> Windows98 SE メモリ 256メガ 以上、宜しくお願い致します。 |
|
投稿日時: 2004-11-01 19:41
赤い水性さんこんにちは。
リソース不足に陥っていませんか? スタート/プログラム/アクセサリ/システムツールにある リソースメータを起動して観測してみてください。 |
|
投稿日時: 2004-11-01 20:01
Kissinger 様
ご返答有難うございます。 案の定、再描画処理(表示されているラベルをdisposeし、再度newする処理)を 行うと、1回行うたびに15%ずつ程度リソースが減少し、 ゼロにちかづいていきます。 これは自動的にフリーしないのでしょうか? Win2000上では特に意識していないのですが、 フリーするような処理が必要ということなのでしょうか? |
|
投稿日時: 2004-11-01 20:57
Disposeしたあとも参照が残ってたりすると、Finalizeされないようです。
Nothingまたは他のオブジェクトへの参照の代入が必要なのはご存知とは 思いますが、思わぬところに残ってたりするものです。 さらに、いつ解放されるかはシステム次第でしょう。 コンポーネントの生成・解放を繰り返すのではなく使い回しするとか、 Flyweightパターンを用いるとかも考えられますが、大掛かりな 変更になるでしょうね。 安全のためには Windows 2000で運用した方が良いと思います。 |
|
投稿日時: 2004-11-02 09:13
ご返信有難うございます。
参考になりました。 VBでの開発は初めてですので、 記述方法がよく分からなかったりするのですが、 もう少し処理を見直してみたいと思います。 |
|
投稿日時: 2004-11-02 09:58
http://www.dj.st44.arena.ne.jp/xwin2/mainhtml/win/sysresource00.html
などを見ていますと、NT系のWindowsに変更しないと 解決しないのだろうか… という風に思えてきたのですが、実際リソース不足について 対処法は無いのでしょうか。 |
|
投稿日時: 2004-11-02 10:10
こんにちは。
VB.NETはまだ使ったことが無いのですが、昔、VB5以下の頃、リソース不足に陥ったときは、使っていないフォームを 強制的に unload したりしていました。 それでもまずくなったときは、機能ごとにexeを分割したりという苦労を重ねたことがあります。 (以下余談) そういえば、VB2.0のころ、VB開発環境を起動して、プロジェクトを読み込んだ後、一度でもRUNさせた後にビルドしたexeは、なぜかUAE(懐かしい・・?)が発生するという症状に出会ったことがあります。プロジェクトを読み込んだ直後にビルドしたものは、ちゃんと動いたのですが・・ |
|
投稿日時: 2004-11-02 10:23
どうにかWin98で安定動作するようにしたいのですが、
なかなか難しい問題がたくさんありそうですね… |