2015-04-24 4 views
0

В моем приложении я переопределяю метод onLowmemory. Он вызывается каждый раз. И мой мобильный телефон застрял. Как освободить память в этом методе.Приложение для Android при вызове с низкой памятью

Я использую ниже код:

@Override 
    public void onLowMemory() { 
     // TODO Auto-generated method stub 
     super.onLowMemory(); 
     System.out.println("*************************************************"); 
     System.out.println("********** on low memory ************************"); 
     System.out.println("*************************************************"); 
     System.gc(); 
    } 

только с помощью System.gc ... спасибо.

+0

Вы не должны использовать System.gc() ;, найти то, что потребляет память (возможно, большие изображения) –

+0

Вы читали [Javadoc для 'onLowMemory()') (http://developer.android.com/reference /android/app/Application.html#onLowMemory%28%29)? * «Вы должны реализовать этот метод, чтобы освободить любые кеши или другие ненужные ресурсы, которые вы можете удержать. Система выполнит сборку мусора для вас после возвращения из этого метода». * Итак, 1) вызов 'System.gc() 'бесполезно, и 2) вы должны освободить любые кэши/ресурсы, находящиеся в памяти, которые вам не нужно поддерживать в вашем приложении (т. е. материал, который можно перезагрузить с диска/db/network и т. д.). –

+0

Этот метод вызывается, когда общая система работает на низком уровне в памяти, а активно выполняемые процессы должны обрезать их использование в памяти. Хотя точная точка, в которой это будет вызвана, не определена, обычно это происходит, когда весь фоновый процесс был убит. То есть, прежде чем достигнуть точки убийства процессов хостинга и пользовательского интерфейса переднего плана, мы хотели бы избежать убийства. читайте официальный андроидный документ http://developer.android.com/reference/android/app/Application.html#onLowMemory%28%29 –

ответ

1

Вы никогда не должны вызывать System.gc(), что создает проблемы с производительностью. Вы должны бесплатно ссылаться на любые тяжелые объекты, которые вы держите - Посмотрите на след вашего приложения. Возьмите кучу кучи и посмотрите его в MAT. Посмотрите, какие объекты занимают большую часть памяти и проверяют, можете ли вы их освободить.