2012-04-04 2 views
0

Есть ли способ, как программно (например, распределение и заполнение некоторого массива) проверить, сколько памяти может выделить Dalvik до появления OutOfMemoryError? Можно ли это сделать с помощью Java?Выделение памяти Dalvik

+0

Посмотрите на это: http://stackoverflow.com/questions/2630158/detect-application-heap-size-in-android Надеюсь, что это помогает ... –

+0

Спасибо, я знаю, есть однострочное решение, но мне нужно проверить его вручную ... вот почему я прошу о программном решении – Waypoint

ответ

5

Каждое приложение Java выделяет память при ее запуске. . Это то, что мы сделали с помощью

java -Xms<initial heap size> -Xmx<maximum heap size>. 

Кроме того, в Throwable блоке, вы можете сделать следующим образом:

  1. Общая память (кучи) - Runtime.getRuntime() TotalMemory();
  2. System.out.println ("Используемая память:"
    + (runtime.totalMemory() - Runtime.runtime.freeMemory())/mb);
  3. System.out.println ("Свободная память:"
    + Runtime.runtime.freeMemory()/mb);
  4. System.out.println ("Общая память:" + runtime.totalMemory()/mb);

Возможно, это решит проблему.

+0

Спасибо, это выглядит хорошо, но проблема связана с распределением полей. Я использую массив String для определения фактической выделенной памяти, когда я устанавливаю большое значение, моя программа вылетает из строя. Вы знаете, как создать динамический массив строк без необходимости объявления неявного размера? – Waypoint

+0

В Java вы можете создать arraylist и который может быть преобразован в массив таким образом: List al = new ArrayList (); al.add («ваша строка»); al.toArray (новый String [al.size()]). Однако в этой ситуации также, если память является ограничением, она сработает. – UVM

Смежные вопросы