>From as far as I know, the variable is still in scope, even if unused. The JVM doesn't optimize reachability to help the GC. Again, from as far as I know.
main can't be inlined, it's main, the top of the class stack It won't be compiled because it is executed only once (and never finish). So no compilation. - Henri On 24 January 2018 at 21:44, 'Carl Mastrangelo' via mechanical-sympathy < [email protected]> wrote: > Consider the following code: > > public class Test { > static volatile Integer discard; > public static void main(String [] args) throws InterruptedException { > printMemory(); > System.gc(); > printMemory(); > int iterations = 1000; > int[] vals = new int[100_000_000]; > while (args.length == 0) { > printMemory(); > System.gc(); > Thread.sleep(200); > discard = iterations++; > } > } > > private static void printMemory() { > System.out.println(Runtime.getRuntime().totalMemory() - > Runtime.getRuntime().freeMemory()); > } > } > > I am surprised to see the memory used by this code starts at about 200MB, > goes up to 600MB, but never seems to go back down. The large int array > accounts for the memory usage jump, but it never seems to be garbage > collected. Why? The variable is never read after it is allocated. It > cannot be reordered by the compiler to be after the while loop, because I > can see the memory jump. I am intentionally allocating memory in the loop > by boxing the integer. Enabling +PrintCompilation and PrintInlining never > shows main() being inlined; perhaps it is not being compiled? > > -- > You received this message because you are subscribed to the Google Groups > "mechanical-sympathy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "mechanical-sympathy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
