Win32bit環境での(can't alloc memory (fileStat))エラー回避方法

460 views
Skip to first unread message

m.f...@gmail.com

unread,
Sep 15, 2017, 1:16:46 AM9/15/17
to fast...@googlegroups.com
(can't alloc memory (fileStat))エラーが発生した際、Window 32bit環境下での回避方法について質問です。

あるフォルダをコピーする際に、FastCopy(ver. 3.3.1)を利用しようと考えております。
コピー元にファイル数が717,682(直下のファイル数です)、容量が761GBの
フォルダをコピーする際に、上記のエラーが出力されてしまい、コピーに失敗してしまいます。

情報を探したところ、

途中で処理が止まる (can't alloc memory (fileStat))


Ver.2.11でCan't alloc memory(dstStatIdxBuf2)(これ以上ファイルがありません。18)

にて、『fastcopy.ini の [main] セクションで、max_attrsize=268435456』という内容がありましたので、
max_attrsizeの値を268435456、536870912、1073741824の値を設定し実行しましたが、変わらずエラーが出てしまいました。
確認時のコピー先は空フォルダを指定しております。

Win32bit環境下で上記のオーダーでフォルダ直下に大量にファイルが存在するケースでFastCopy利用したいと考えております。

回避策がありましたらご教授いただけないでしょうか。

よろしくお願い致します。

== 環境情報 ==
OS: Windows7 32bit
FastCopy: (ver. 3.3.1-32bit)

失敗するコピー元フォルダ1
直下のファイル数:717,682
ファイル容量:761GB
(外付けUSBHDD)

失敗するコピー元フォルダ2
直下のファイル数:873,756
ファイル容量:22GB
(外付けUSBHDD)
==========

Hiroaki SHIROUZU

unread,
Sep 15, 2017, 3:07:06 AM9/15/17
to FastCopy掲示板
>変わらずエラーが出てしまいました。

とありますが、いずれも正確に同じエラー内容でかつ、実行途中で出ますか?
1GB設定だと、メッセージ末尾が別の内容でかつ、実行ボタンを押すとエラー発生、という形になるのでは?と思います。

そうでない場合は、設定が反映していないはず。
(FastCopyを起動していない状態で変更する必要があります)

それから、メインバッファ指定はいくつにしていますか?

P.S v3以降の設定ファイルは fastcopy2.ini になります。

fu...@media-labo.co.jp

unread,
Sep 15, 2017, 10:36:01 AM9/15/17
to FastCopy掲示板
白水様

ご回答ありがとうございます。

設定の読み込みに失敗している可能性があるとのことで、一度設定ファイルをすべて削除し
アプリケーションを起動して生成されたFastCopy2.iniへmax_attrsize="268435456"と設定したところ、
エラーが発生せず動作するようになりました。ありがとうございました。

一番最初にFastCopy.iniを作成して設定しており、FastCopy.iniとFastCopy2.iniの両方がある状態で設定の変更を
行っておりましたので、正しく設定できなかったのではないかと考えております。

>>1GB設定だと、メッセージ末尾が別の内容でかつ、実行ボタンを押すとエラー発生
これについては記述しておりませんでしたが、2GBを設定したときは実行ボタンを押した直後に別のエラーが発生しました。
1GBの設定を行ったときはエラー内容に変化がなかったため、このことからも、読み込みに失敗していたのだと思います。

>>それから、メインバッファ指定はいくつにしていますか?
メインバッファですが、128MBを指定しておりました。

問題が解決したのですが、1点質問があります。
max_attrsizeを大きくした場合の弊害はありますでしょうか。
実メモリが少ない環境(例えば2GB)において512MBを指定した場合に
エラーが発生してしまいコピー処理が動作しなくなるかが気になっております。

連続の質問となってしまい、大変恐縮ですがご回答いただけますと幸いです。

よろしくお願いいたします。

Hiroaki SHIROUZU

unread,
Sep 16, 2017, 1:57:51 AM9/16/17
to fast...@googlegroups.com
単に 512MBを指定すること自体は、通常のコピーには影響はありません。(アドレス空間を予約するだけなので、仮想記憶自体は消費しない)

ただし、1ディレクトリに大量のファイル数に出くわすようなコピーを行うと、大量のファイル情報を格納しようと仮想記憶を使おうとするわけです。

するとシステム全体の仮想記憶サイズ(メモリ+スワップ)が、OSや他のプロセスを合計して、そのサイズを超えれば、その時点でメモリ確保エラーが出るはずです。
また、それ以前にスワップ領域を多用する状態になっているはずで、するとシステム動作の大幅低下になる可能性があります。

基本的には、もう少しまともなスペックの64bitマシンでコピーするのが良いかと思います。

P.S (おそらくソフトウェアのエラー報告全般に言えることですが)、エラーメッセージ内容は正確に記述すると良いです。
 たとえば、v3では"can't alloc memory (fileStat)" というエラーメッセージは出さない(少し変化したものが複数存在)ため、問題個所の推定に少し手間取ったり、また1GB時のエラーメッセージと発生タイミングが書いていないので、ini反映問題か1GB空間確保エラーだったのか推定できず困りました(笑)
 フリーソフトですし、なるべく解析の負担が軽くなるように意識してもらえると助かります。

m.f...@gmail.com

unread,
Sep 18, 2017, 5:03:25 PM9/18/17
to FastCopy掲示板
白水様

回答ありがとうございました。
1ディレクトリ下に大量のファイル数が存在する状況にてコピーを行った際に、どのような理由によって
現象が発生するかよく理解できました。
可能であれば、64bitマシンでのコピーも検討してみようと思います。

エラーメッセージについては、大変失礼いたしました。
いま、読み返してみると肝心のエラーメッセージが全文で書かれておりませんでした。
次回以降、正確に転記されているか確認するようにいたします。
ご指摘ありがとうございます。
Reply all
Reply to author
Forward
0 new messages