WindowsXPで(一つのディレクトリ下にある)多数のファイルをコピーすると「リソースが足りないので処理を中断します」のようなメッセージがでて中断します。注、いまそのマシンが手元にないのでメッセージは正確ではありません。


コピーするファイル数は10万以上。多い場合は数十万。また他の処理がいくつか走っています。
ファイル数を減らしてやるとうまくいきます。

注、一つのディレクトリに、そんなにファイルを置くなという突っ込みはなしです。改善予定です。

メモリは1Gつんでいますが、タスクマネージャの表示では、だいたい500M程度の使用量です。

原因と対策をお願いします。

回答の条件
  • 1人2回まで
  • 登録:2006/04/03 13:23:57
  • 終了:2006/04/03 22:35:32

回答(7件)

id:sainokami No.1

sainokami回答回数853ベストアンサー獲得回数452006/04/03 13:43:14

ポイント35pt

メモリをOSの上限である2Gまで増やして、

常駐ソフトやアクティブデスクトップなどを無効にし、

可能ならファイルをコピーする前に再起動する。

http://yougo.ascii24.com/gh/72/007224.html

id:gzmgzm

メモリの問題ではないと考えています。たぶん。他の処理があるので再起動はできません。

アクティブデスクトップは使っていない。あんなのまだあるの?

2006/04/03 13:53:19
id:pasosavi No.2

pasosavi回答回数761ベストアンサー獲得回数282006/04/03 13:58:19

ポイント35pt

原因:

コピーしたファイルの総合計容量以上のメモリ+仮想メモリ領域がなければ、処理は不可能です…


※もちろんファイル群をいわば出し入れする遊びも必要


対策:

マイコンピュータ右クリック>プロパティ>詳細設定>パフォーマンス>詳細設定>仮想メモリ変更

カスタムサイズで、初期サイズ/最大サイズを扱いたいファイル容量+100MBぐらいに設定します

(つまり物理メモリ分は丸々空けておくぐらいの気持ちで 

設定ボタンを押してOKを押して指示通り再起動。


※物理メモリの初期値が初期サイズ、その大体倍が最大サイズになっています。

 後から物理メモリを足すと、この値が不整合なままの場合があります。

 (すべてのドライブの総ページングファイルサイズの推奨値を参照

 一番パフォーマンスがいいのは、推奨サイズで初期サイズ/最大サイズをかっちり決めてしまうことです。

 これにより、ページングファイルの増減による断片化がなくなります。

 (より正確には、ページングファイル用に取ってある領域も自由に使えるようになる

 ただ、これを固定すると、仮想メモリを大量に消費する作業でフリーズするので注意が必要です…

 (ページングファイルなしはパフォーマンス最大ですが作業容量が閾値を越えればフリーズ

id:gzmgzm

仮想メモリは3024M設定しています。

コピー対象のファイルサイズの総量は分かりませんが、直感的には、実メモリを加えた量よりも、かなり大きいと思います。

それとコピー時にすべてを読み込むはずはないので、ファイルサイズと仮想記憶+メモリが直接関係あるとは思えません。

2006/04/03 22:31:58
id:sainokami No.3

sainokami回答回数853ベストアンサー獲得回数452006/04/03 14:04:14

ポイント10pt

単純にXPのキャパ以上の処理をさせてるだけではないですか?

もう一台用意して、処理を分散させるしかないんじゃ

id:KairuaAruika No.4

KairuaAruika回答回数6926ベストアンサー獲得回数972006/04/03 15:13:14

ポイント10pt

http://ebi.dyndns.biz/hiki.cgi?ActiveDirectory%B4%F0%C1%C3

それくらいのファイル数になると,ユーザ側の工夫で回避しない限り,マシン側での解決は不可と思われます。

id:mazucon No.5

mazucon回答回数5ベストアンサー獲得回数02006/04/03 15:36:58

ポイント10pt

それは同じドライブにコピーするのですか?

もしそうじゃなかったら、FileFileCopy(Vecterで見つけて)を使ってみてください。

もしかしたら違うかもしれませんが・・・

id:fuk00346jp No.6

潮澤 昴回答回数1140ベストアンサー獲得回数542006/04/03 17:49:57

ポイント10pt

コマンドプロンプトからcopyかxcopyコマンド使って頂戴な。

Windowsの腐れコピーは全コピーが終了するまでメモリに溜め込む癖あるんで。

@IT:Windows TIPS -- Knowledge:これだけは覚えて...

id:takaramonob No.7

takaramonob回答回数77ベストアンサー獲得回数52006/04/03 20:10:27

ポイント10pt

中断の原因は物理+仮想メモリサイズの容量不足ですね。

物理メモリ1Gで、常時500M消費という状態では、数十万のファイルのコピーは不可能だと思います。

解決策は、pasosaviさんの回答が適切だと思います。

他の方法としては、Windowsをセーフモードで起動すれば、余計なドライバの読み込みやサービスの起動がされない分、ファイル操作にリソースを多く割り当てることができますし、あるいはGUIでなくても良いのであれば、セーフモードのプロンプトcopyコマンドを使用するという手もありますね。

セーフモードの選択画面で、「セーフモードとコマンドプロンプト」を選択して起動すれば、さらにスリムになって作業できます。

DOS上でならおそらく大丈夫だと思いますよ。

  • id:pasosavi
    http://homepage2.nifty.com/winfaq/w2k/trouble.html#1284
  • id:fuk00346jp
    >http://homepage2.nifty.com/winfaq/w2k/trouble.html#1284
    参考までにですよね?マジ回答だったらちとはずしてますよ。
    この質問者はWindows XP(2000ではありません。)ですから
  • id:pasosavi
    参考です。:-)
    言葉足らずを補ってくださり深謝
  • id:gzmgzm
    質問して、そのままになっていましたが、質問者です。
    今となっては遅いですが、コピーはDOS窓からcopyコマンドで行いました。また同様のエラーがファイルを作成する自作プログラムでも発生しました。自作プログラムにおいては、巨大なメモリを使うわけでもなく、ファイルのオープンは一時には一つだけです。それでもディレクトリを読みにいくときに、ファイル数が多いので、なにかおかしくなるのだと考えています。ま、もっともこれではないよう不明ですが。ディレクトリを読んだ結果として、ファイルの情報(java.io.File[](結局このサイズがかなりあります))が蓄積されますので、このあたりでしょう。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません