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