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