Я пытаюсь написать программу, которая выполняет чтение / обработку / запись.
Хотя все работает нормально, когда я указываю своей программе локальный путь, я сталкиваюсь с необычной проблемой: огромным использованием памяти при обработке файлов по локальной сети.
Если путь к файлу похож на « //network_address/folder/*.ext
», программа использует около 4 ГБ ОЗУ (в отличие от 500 - 1 ГБ, когда путь похож на « c:/folder/*.ext
»).
Я использовал Process Monitor, чтобы увидеть, что происходит, и заметил постоянные сбои чтения в папке « c:\windows\csc\v2.0.6\namespace
», которую я даже не знал, что она существует. Исследуя его, я обнаружил, что он использовался для синхронизации файлов с сетевым сервером, возможно, для просмотра сетевых файлов в автономном режиме.
Вышеуказанные сбои происходили как раз перед запуском процесса записи в файл (не перед чтением), папка пространства имен не использовалась, у меня ничего не было синхронизировано, и фактическая запись на сетевые диски прошла успешно.
Я не настроил опцию синхронизации папок ... (и не хочу)
Как только я стал владельцем этой папки, использование памяти уменьшилось (хотя я все еще получал ошибки чтения в Process Monitor).
Так... Я думаю, что моя проблема в том, что я пытаюсь сделать то, что мне не разрешено, и использую много памяти для хранения данных, пока я пытаюсь сделать то, что мне не разрешено, до тех пор, пока я не потерплю неудачу и, наконец, не помещу данные в свое место ...
Решение: избегать делать то, что мне не разрешено, верно?
Есть ли способ (предпочтительно командная строка, которую я могу запустить в своем коде, или запись в реестре, которую я могу изменить), который может помешать моей программе синхронизировать файлы (если это происходит) или использовать эту папку пространства имен при чтении из сетевой диск?
Как я могу запретить Windows синхронизировать файлы за моей спиной и просто записывать файлы прямо в сетевую папку?