inner-1457:small memory leak when read from disk

Signed-off-by: dcy <dcy10000@gmail.com>
This commit is contained in:
dcy
2021-11-12 16:49:20 +08:00
committed by Rico
parent 3d9a38a9d3
commit e44a87ca3e
3 changed files with 18 additions and 0 deletions
@@ -222,6 +222,10 @@ public abstract class ResultDiskBuffer implements ResultExternal {
}
}
public void clear() {
pool.recycle(readBuffer);
}
private void checkReadBuffer(int offset) {
// if offset is 0,then expend buffer; else set offset to 0,compact
// buffer
@@ -133,6 +133,14 @@ public class SortedResultDiskBuffer extends ResultDiskBuffer {
resetHeap();
}
@Override
public void close() {
for (ResultDiskTape tape : tapes) {
tape.clear();
}
super.close();
}
protected void resetHeap() {
if (heap == null)
heap = new ArrayMinHeap<>(tapes.size(), this.heapCmp);
@@ -68,6 +68,12 @@ public class UnSortedResultDiskBuffer extends ResultDiskBuffer {
mainTape.readBuffer.clear();
}
@Override
public void close() {
mainTape.clear();
super.close();
}
@Override
public RowDataPacket next() {
file.seek(mainTape.pos);