Here is the small code which I am trying. This program takes good amount of time to execute. While running, if I try to kill it through the terminate button in eclipse, it returns Terminate Failed. I can kill it from terminal using kill -9 <PID>.
But, when I don't print the variable result in the last line of the program (Please check the commented portion of the code), the program exits immediately.
I am wondering :
-
Why is it taking time to execute when the value of result is being printed?
Please note, if I don't printvalue, the same loop gets over immediately. -
Why is eclipse not able to kill the program?
Update 1 : It seems JVM is optimize the code during the runtime (not in compile time). This thread is helpful.
Update 2 : When I print the value of value, jstack <PID> is not working. Only jstack -F <PID> is working. Any possible reason?
public class TestClient {
private static void loop() {
long value =0;
for (int j = 0; j < 50000; j++) {
for (int i = 0; i < 100000000; i++) {
value += 1;
}
}
//When the value is being printed, the program
//is taking time to complete
System.out.println("Done "+ value);
//When the value is NOT being printed, the program
//completes immediately
//System.out.println("Done ");
}
public static void main(String[] args) {
loop();
}
}
Aucun commentaire:
Enregistrer un commentaire