HI,Недостаточно памяти после выполнения приложения несколько раз
Возникла проблема с ошибкой в памяти.
Я создаю класс для синтаксического анализа потокового вещания, а классу нужны буферы для хранения этих необработанных данных.
Вот фрагменты кода:
/* Initial and uninitial buffer in class */
private final int MAX_BUFFER = 16;
protected byte[][] m_byStreamBuf = null; // Frame buffer
public void InitBuffer() {
m_byStreamBuf = new byte[MAX_BUFFER][];
m_byStreamBuf[0] = new byte[512*1024]; // for I Frame
for (int i = 1; i < MAX_BUFFER; i++) {
m_byStreamBuf[i] = new byte[256*1024]; // for P frame
}
}
public void UninitBuffer {
this.m_byStreamBuf = null;
System.gc();
}
Из ошибки памяти будет происходить после запуска и закрытия приложений в несколько раз (может быть, три или четыре раза на самом деле).
Я проверяю, что ошибка возникает на линии, которая выделяет память.
Я пытаюсь вызвать System.gc() при закрытии приложения каждый раз.
Но похоже, что приложение по-прежнему выделяет слишком много памяти и не выпускает все из них.
Спасибо за любое предложение.
С уважением,
Caxton
Точка @ Stephen, 'System.gc()' - это всего лишь предложение для запуска gc, а не мандат. –
У меня есть ощущение, что здесь происходит что-то еще, мы не видим ... –
выглядит как кто-то еще держит m_byStreamBuf – bhups