新しく発言する EXIT インデックスへ
仮想メモリが不足してしまいます。

  仮想メモリが不足してしまいます。 日比雅人 2003/10/05 10:27:15 
  FullBASICでは変数はプログラム単位ごとに管... 白石和夫 2003/10/05 12:10:42 
  │└なお,ヘルプの 白石和夫 2003/10/05 13:35:57 
  │ └文字列変数は動的に管理されていますので,... 白石和夫 2003/10/05 13:49:07 
  │  └どうもありがとうございます。SWを簡略化... 日比雅人 2003/10/06 01:40:44 
  物理的な問題かもしれません ひよ 2003/10/08 18:35:38 

  仮想メモリが不足してしまいます。 日比雅人 2003/10/05 10:27:15  ツリーへ

仮想メモリが不足してしまいます。 返事を書く
日比雅人 2003/10/05 10:27:15
白石さん、本ソフトは非常に使いやすく、活用させていただいております。
さて、質問があるのですが教えていただけませんでしょうか。DOループが何重にも重なり、いろいろとサブルーチンを呼びまくるSWを作って動かしております。XP機で仮想メモリーも大きめに確保していますがシステムメモリーがどんどん使われて途中でメモリー不足で止まってしまいます。 Dimennsionを指定している変数はあっても非常に少なく同じような計算を繰り返すだけでメモリーは少なくても動くはずですが。 プログラムの途中で不要なメモリー領域を開放するようなコマンド、やり方はないでしょうか。よろしくお願いします。
日比

  FullBASICでは変数はプログラム単位ごとに管... 白石和夫 2003/10/05 12:10:42  ツリーへ

Re: 仮想メモリが不足してしまいます。 返事を書く
白石和夫 2003/10/05 12:10:42
Full BASICでは変数はプログラム単位ごとに管理されます。ですので,大きな配列を扱う場合は,外部副プログラムに分割してください。外部副プログラムから抜けるとき,その副プログラムで使っていた変数は解放されます。

  │└なお,ヘルプの 白石和夫 2003/10/05 13:35:57  ツリーへ

Re: FullBASICでは変数はプログラム単位ごとに管... 返事を書く
白石和夫 2003/10/05 13:35:57
なお,ヘルプの
言語仕様の詳細−制限
システム情報−BASIC.INI
のページも見てください。

  │ └文字列変数は動的に管理されていますので,... 白石和夫 2003/10/05 13:49:07  ツリーへ

Re: なお,ヘルプの 返事を書く
白石和夫 2003/10/05 13:49:07
文字列変数は動的に管理されていますので,不要になった文字列変数には空文字列を代入してください。

  │  └どうもありがとうございます。SWを簡略化... 日比雅人 2003/10/06 01:40:44  ツリーへ

Re: 文字列変数は動的に管理されていますので,... 返事を書く
日比雅人 2003/10/06 01:40:44
どうもありがとうございます。SWを簡略化したり、メインを外部副プログラムにして、メモリーの使用量を3分の1程度まげ下げることができ処理も当初の48分割から16分割に大幅に改善しました。一処理が10分ですので、全部で3時間程度で済みそうです。

  物理的な問題かもしれません ひよ 2003/10/08 18:35:38  ツリーへ

Re: 仮想メモリが不足してしまいます。 返事を書く
ひよ 2003/10/08 18:35:38
物理的な問題かもしれません
メモリーとマザーボードの相性が悪いと
ちょっと大きめのソフトを走らし、不具合のあるメモリー位置を
超えた当たりで、メモリーを次々と消費し
物理メモリーを超え、仮想メモリーを食いつぶし
設定した仮想メモリー限界に達したら、「メモリーが不足してるので
仮想メモリーを増やしてます」とかのメッセージでハングアップする
事があります。先週くみ上げたPCがこれでした。

メモリーの不具合をテストするのでしたら、memtestが有名です
http://www.memtest86.com/
こいつの、CDRブートイメージを頂いてきてCDRに焼いて
CDブートしてメモリチェックして下さい。

それから使ってないメモリーを解放するソフトでしたら
http://www.vector.co.jp/soft/win95/hardware/se161059.html
ここからmemfree をダウンロードして組み込みましょう。


インデックスへ EXIT
新規発言を反映させるにはブラウザの更新ボタンを押してください。