У меня есть файл с отображением памяти и страница в представлении, которое в настоящее время выполнено. Я хотел бы прекратить его. MapViewOfFile говорит мне, что я не могу использовать VirtualFree на сопоставленных файлах. Есть ли другой способ сделать это?Как я могу декомпилировать страницу с отображением файлов?
ответ
Вы не можете decommit, но то, что вы действительно хотите, не decommitting его ...
То, что вы действительно хотите, чтобы освободить страницу из памяти. Это можно сделать с помощью VirtualUnlock. См. VirtualUnlock Remarks:
Вызов VirtualUnlock в области памяти, которая не заблокирована, освобождает страницы из рабочего набора процесса.
Примечание: как указано в документе, функция вернет FALSE (страница не была заблокирована), а GetLastError вернется ERROR_NOT_LOCKED.
Это описано в Guillermo Prandi's question CreateFileMapping, MapViewOfFile, how to avoid holding up the system memory.
Примечания: Я думаю, что вы можете просмотреть его следующим образом: декомпозиция сопоставленной страницы бессмысленна - страницы выполняются всякий раз, когда она поддерживается физическим хранилищем, будь то память или файл. Файл, сопоставленный с страницами, не может быть декомпозирован в этом смысле, так как он всегда будет поддерживаться файлом. не
Тем не менее, код в the question mentioned измеряет объем памяти, но то, что меры не является представителем, как тот факт, страница удаляется из рабочего набора процесса не обязательно означает, что она больше не присутствует в воспоминание.
Я провел другой эксперимент, измеряя, сколько времени требуется, чтобы прочитать байт с карты памяти. После разблокировки страницы или отмены отображения и закрытия дескриптора отображения доступ был все еще быстрым.
Для того чтобы доступ к медленному (т.е. чтобы действительно отбросить страницу из памяти), необходимо было отключить представление и закрыть дескриптор отображения BOTH и дескриптор файла (последнее было для меня неожиданным, поскольку я ожидал, просмотра и закрытия дескриптора отображения будет достаточно).
По-прежнему возможно, что система возьмет VirtualUnlocked как подсказку, и она рано или поздно отбросит страницы, как только ей нужно что-то отбросить, но это то, о чем я должен думать, но как доказать.
- 1. Как я могу декомпилировать native внутри C#
- 2. Как я могу декомпилировать сразу несколько банок?
- 3. Как я могу декомпилировать несколько сборников .NET?
- 4. как декомпилировать несколько файлов JAR
- 5. Как я могу программно декомпилировать файлы dex в Android?
- 6. Как декомпилировать dll C++?
- 7. Как я могу декомпилировать swf-файл и получить оригинальные скрипты?
- 8. Могу ли я декомпилировать проект с хранилищем ключей?
- 9. Именование файлов с отображением памяти
- 10. как я могу исправить скрипт PHP, который останавливает HTML страницу с отображением
- 11. Как я могу получить данные из файла с отображением памяти?
- 12. C# с использованием файлов с отображением памяти
- 13. Как я могу наследовать страницу?
- 14. Как декомпилировать сайт asp.net
- 15. Могу ли я декомпилировать подписанное и установленное приложение для Android?
- 16. Как «декомпилировать» закладку?
- 17. Сравнение содержимого двух файлов с отображением различий
- 18. Как декомпилировать пакет java?
- 19. Могу ли я декомпилировать asp.net mvc 4 dll files
- 20. Недостатки использования файлов с отображением памяти
- 21. Как я могу опубликовать ссылку на страницу стены как страницу?
- 22. Диалог открытия Matlab с отображением серых файлов
- 23. В чем преимущества файлов с отображением памяти?
- 24. системный вызов памяти с отображением файлов - linux
- 25. Как декомпилировать файл .class?
- 26. Как декомпилировать файл .jar?
- 27. Общая память без файлов с отображением памяти
- 28. Как декомпилировать Java
- 29. Как декомпилировать файл FMX
- 30. Как декомпилировать это?
Я выполнил эксперимент, и до сих пор результаты пока не доказаны. Я опишу его непосредственно в ответе. – Suma