有效地修剪while循环内部

时间:2019-03-14 18:42:37

标签: java memory-management

我有一个操作,我从缓冲区读取数据,并且在传递数据之前需要对其进行修剪。 audioRecord.read()返回可变数量的数据。

short[] data = new short[bufferSizeInBytes];

while (shouldRecord) {
    int numberOfShortsRead = audioRecord.read(data, 0, data.length);
    if (numberOfShortsRead > 0) {
        // we are allocating memory here every time =\
        short[] trimmed = new short[numberOfShortsRead];
        System.arraycopy(data, 0, trimmed, 0, numberOfShortsRead);
        doSomething(trimmed);
    }
}

阅读一段时间后,我看到一些OutOfMemory异常。如何有效执行此修剪,而不必为每个可能的修剪数组大小分配内存?

0 个答案:

没有答案