#android #memory-management
#Android #управление памятью
Вопрос:
как очистить процесс из памяти, когда он уничтожен, мне все равно, процесс пуст или ничего не делает. просто хочу очистить его из памяти.
или
После однократного чтения файла размером 1 м он будет считан из памяти / кэша при повторном чтении. вопрос в том, может ли он быть удален из памяти или кэша после одного чтения?
Спасибо
Комментарии:
1. вы хотите завершить процесс приложения.
Ответ №1:
Лучший ответ: вы не «очищаете это»: вы позволяете Android обрабатывать их. Любой процесс будет уничтожен, если (когда) возникнет потребность в памяти. Что касается кэшей, об этом позаботится сборщик мусора. Опять же, с вашей стороны ничего не нужно делать (за исключением, может быть, проверки того, что вы где-то не оставили на него живых ссылок).
Ниже я цитирую часть поста Дианы Хакборн в блоге Android:
Когда приложение «останавливается»?
Распространенное заблуждение о многозадачности Android заключается в разнице между процессом и приложением. В Android это не тесно связанные объекты: приложения могут казаться пользователю присутствующими без реального процесса, в данный момент выполняющего приложение; несколько приложений могут совместно использовать процессы или одно приложение может использовать несколько процессов в зависимости от своих потребностей; Android может поддерживать процессы приложения, даже если это приложение что-то активно не делает.
Тот факт, что вы можете видеть, что процесс приложения «запущен», не означает, что приложение запущено или что-либо делает. Это может быть просто там, потому что Android в какой-то момент нуждался в этом и решил, что было бы лучше сохранить его на случай, если он понадобится снова. Аналогично, вы можете ненадолго оставить приложение и вернуться к нему с того места, где вы остановились, и за это время Android, возможно, понадобилось избавиться от процесса для других целей.
Ключом к тому, как Android обрабатывает приложения таким образом, является то, что процессы не завершаются чисто. Когда пользователь покидает приложение, его процесс сохраняется в фоновом режиме, позволяя ему продолжать работу (например, загружать веб-страницы), если это необходимо, и немедленно выходить на передний план, если пользователь возвращается к нему. Если на устройстве никогда не заканчивается память, то Android сохранит все эти процессы, действительно оставляя все приложения «запущенными» все время.
Конечно, объем памяти ограничен, и чтобы приспособиться к этому, Android должен решить, когда избавиться от процессов, которые не нужны. Это приводит к жизненному циклу процесса Android, правилам, которые он использует, чтобы решить, насколько важен каждый процесс и, следовательно, следующий, который следует удалить. Эти правила основаны как на том, насколько важен процесс для текущего взаимодействия пользователя, так и на том, сколько времени прошло с тех пор, как процесс в последний раз был нужен пользователю.
Ответ №2:
Если вы хотите завершить процесс, это может помочь,
int pid = android.os.Process.myPid();
android.os.Process.killProcess(pid);
Runtime r = Runtime.getRuntime();
r.gc();
System.gc();