このブログを検索

2013/06/13

windowsでデータコピー中に「メモリ不足のためこの操作は実行できません」と表示されコピーが止まる

windows7(32bit)でデータコピー中に「メモリ不足のためこの操作は実行できません」と表示され、コピーがいちいち止まって、毎回「再試行」ボタンを押していてイライラしていた.

原因はデスクトップヒープのメモリ領域が少ないが為に起こる現象のようだ.
デスクトップヒープとはwikipediaによると画面部分のデータを管理するメモリ領域との事で、自分のパソコンは12288と設定されていたようだ.(ちなみにメモリ4GB載せてます)

検索してみたところ、りあえず下記のレジストリの値を書き換えると解決できるとの事で書き換えてみた.
キー名:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems
キー内の値名:
Windows
修正前の値:
%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows 
SharedSection=1024,12288,768 
Windows=On 
SubSystemType=Windows 
ServerDll=basesrv,1 
ServerDll=winsrv:UserServerDllInitialization,3 
ServerDll=winsrv:ConServerDllInitialization,2 
ServerDll=sxssrv,4 
ProfileControl=Off 
MaxRequestThreads=16
修正後の値:
%SystemRoot%\system32\csrss.exe 
ObjectDirectory=\Windows 
SharedSection=1024,20480,768
Windows=On 
SubSystemType=Windows 
ServerDll=basesrv,1 
ServerDll=winsrv:UserServerDllInitialization,3 
ServerDll=winsrv:ConServerDllInitialization,2 
ServerDll=sxssrv,4 
ProfileControl=Off 
MaxRequestThreads=16
SharedSectionの2番目の引数を20480(マイクロソフト推奨)に設定して再起動したら表示されなくなった.

-- 追記
とおもったら、全然メモリ不足警告が表示されて、何の解決にも至っていなかった.
今回は、fastcoyでコピーして、吐かれたエラーログを頼りにcopyコマンド作成して対応してみた.
エラーファイルは1000ファイル程だったので、吐かれたエラーをコピペしてテキストエディタに貼り付けて、ファイルパスのみを抽出複製して、複製したパスのドライブ名を変更するだけで何とかしのげた.
ドライブの移行だけだったからこんなもんで済んでよかった.

今回使用したコマンドは以下のもの.
copy /Y /V F:\file00.png D:\file00.png >> c:\copy.log
copy /Y /V F:\file01.png D:\file01.png >> c:\copy.log
...
※ copy.logはエラー確認用
-- 追記
毎回コピーツールでコピーっていうのは、なんだかなと思い再度調べてみたところどうやら原因は、SharedSectionの3番目の引数に原因があるようだ.
参照先をよく読んでいたら、マイクロソフトのfixitによる修正では3番目の引数も1024に変更されるとの事だったので、自分も同じ設定にして再起動してみたら、今度こそエラーも無くコピーを終えてくれた.
もっと良く読もう!おれ!
SharedSection=1024,20480,1024
参考:
http://support.microsoft.com/kb/947246

0 件のコメント:

コメントを投稿