Memory leak
Closed this issue · 1 comments
CiaranOMara commented
I've observed a memory leak with the in-place reading/iteration pattern.
using XAM
using ProgressMeter
io = open(file_sam, "r")
reader = XAM.SAM.Reader(io)
p = Progress(filesize(file_sam))
record = XAM.SAM.Record()
while !eof(reader)
read!(reader, record)
#...
ProgressMeter.update!(p, position(reader.state.stream),showvalues = [(:position,position(reader.state.stream))])
end
close(io)
CiaranOMara commented
With in-place reading, the record.fields
was expanding as the record was not reset between calls to read!
. Unfortunately, this means that other fields were potentially mixing with previous data.
The amended in-place reading pattern below.
using XAM
using ProgressMeter
io = open(file_sam, "r")
reader = XAM.SAM.Reader(io)
p = Progress(filesize(file_sam))
record = XAM.SAM.Record()
while !eof(reader)
empty!(record) # Reset the record for new data!
read!(reader, record)
#...
ProgressMeter.update!(p, position(reader.state.stream), showvalues = [(:position,position(reader.state.stream))])
end
close(io)