- PR -

Windows98seでブルースクリーン

投稿者投稿内容
赤い水性
会議室デビュー日: 2004/11/01
投稿数: 10
投稿日時: 2004-11-01 19:33
Windows2000sp4上で、vb.netによる開発を行っています。
処理中に多数のコントロール作成(200〜300程度のラベルなど)を行う処理を
行っているのですが、ビルドしたexeを、Windows98se上で動作させると、
処理中にマシンごとフリーズ、もしくはブルースクリーンになり、
再起動を余儀なくされます。

必ず○○○をしたら起こる、などではなく、
ランダムに発生しているように見えます。

Windows2000(開発環境)では全く発生しません。
これはOSの問題でしょうか?
または、メモリ搭載量などが影響しているのでしょうか…?
数台のWin98SEマシンで動作を行ってみたのですが、
すべて同様の症状なのです。

ちなみに、それぞれの環境は、以下のようになります。
<開発>
Windows2000 sp4
メモリ 512メガ

<実行>
Windows98 SE
メモリ 256メガ

以上、宜しくお願い致します。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-11-01 19:41
赤い水性さんこんにちは。

リソース不足に陥っていませんか?
スタート/プログラム/アクセサリ/システムツールにある
リソースメータを起動して観測してみてください。
赤い水性
会議室デビュー日: 2004/11/01
投稿数: 10
投稿日時: 2004-11-01 20:01
Kissinger 様

ご返答有難うございます。

案の定、再描画処理(表示されているラベルをdisposeし、再度newする処理)を
行うと、1回行うたびに15%ずつ程度リソースが減少し、
ゼロにちかづいていきます。

これは自動的にフリーしないのでしょうか?
Win2000上では特に意識していないのですが、
フリーするような処理が必要ということなのでしょうか?
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-11-01 20:57
Disposeしたあとも参照が残ってたりすると、Finalizeされないようです。
Nothingまたは他のオブジェクトへの参照の代入が必要なのはご存知とは
思いますが、思わぬところに残ってたりするものです。
さらに、いつ解放されるかはシステム次第でしょう。

コンポーネントの生成・解放を繰り返すのではなく使い回しするとか、
Flyweightパターンを用いるとかも考えられますが、大掛かりな
変更になるでしょうね。

安全のためには Windows 2000で運用した方が良いと思います。
赤い水性
会議室デビュー日: 2004/11/01
投稿数: 10
投稿日時: 2004-11-02 09:13
ご返信有難うございます。
参考になりました。

VBでの開発は初めてですので、
記述方法がよく分からなかったりするのですが、
もう少し処理を見直してみたいと思います。
赤い水性
会議室デビュー日: 2004/11/01
投稿数: 10
投稿日時: 2004-11-02 09:58
http://www.dj.st44.arena.ne.jp/xwin2/mainhtml/win/sysresource00.html
などを見ていますと、NT系のWindowsに変更しないと
解決しないのだろうか…
という風に思えてきたのですが、実際リソース不足について
対処法は無いのでしょうか。
Junbow
ぬし
会議室デビュー日: 2002/01/24
投稿数: 373
お住まい・勤務地: saga.jp
投稿日時: 2004-11-02 10:10
 こんにちは。
 VB.NETはまだ使ったことが無いのですが、昔、VB5以下の頃、リソース不足に陥ったときは、使っていないフォームを 強制的に unload したりしていました。
 それでもまずくなったときは、機能ごとにexeを分割したりという苦労を重ねたことがあります。

(以下余談)
 そういえば、VB2.0のころ、VB開発環境を起動して、プロジェクトを読み込んだ後、一度でもRUNさせた後にビルドしたexeは、なぜかUAE(懐かしい・・?)が発生するという症状に出会ったことがあります。プロジェクトを読み込んだ直後にビルドしたものは、ちゃんと動いたのですが・・
赤い水性
会議室デビュー日: 2004/11/01
投稿数: 10
投稿日時: 2004-11-02 10:23
どうにかWin98で安定動作するようにしたいのですが、
なかなか難しい問題がたくさんありそうですね…

スキルアップ/キャリアアップ(JOB@IT)