i using scanner reading many logs file (~100 files), each logs file ~120mb , have on 1,000,000 lines. memory using reading there logs file continuous increase , cause memory overload. how prevents happen? here's code:
file file = processing.poll(); // processing queue. scanner sc = new scanner(file); string line; int linecount = 0; while (sc.hasnextline()) { line = sc.nextline(); } sc.close();
thanks you!!
p/s: memory increase slow, ~1mb each file processed push code server , there're countless files in future.
i suggest use try-with-resources
close
scanner
, release file handle. also, restrict scope of line
, think meant increment linecount
. like,
int linecount = 0; try (scanner sc = new scanner(file)) { while (sc.hasnextline()) { string line = sc.nextline(); linecount++; } }
alternatively, might use finally
block like
int linecount = 0; scanner sc = new scanner(file); try { while (sc.hasnextline()) { string line = sc.nextline(); linecount++; } } { sc.close(); }
Comments
Post a Comment