How to reduce memory leak when using Scanner in Java? -


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