
本文共 10208 字,大约阅读时间需要 34 分钟。
JVM���������
������������������������JIT���������,,���������������JVM������������������,JIT���������������������������������.
java���������������������
���������������������������������.java������������������������.class������,������������������������������������������,���������������������������������������.class������,������������������������.���������������JVM���.class������������������������,������������������������������.���������������
JIT���������������
������������JAVA������������JIT���������������������������.���������������������������������.class������������������������������������������������������?���������������������.class���������,������������������������.class���������������������������,���������������������,������������������������������������,������������������������������������,���������������������for���������,���������������������������������������������������������.���������������������������.���������������������������������������������.���������������������
������������
���������������������������������������������?������������������������������������������������������������������.
1������������������������
2���������������������������.
������������,������������������������������������������������.������������������������������������������������������������,������������������������������������,���������������������������,���������������������.
���������������������������������
������������������������������������.
HotSpot������������������������������
���������������������
���������������
JIT������������
JIT���������������������������������������,������������������������������������������,���������������������������
1���������������������������
2������������
���������������������������������,������������������������������������������������������������,���������������.���������JIT���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������JVM������������������������������������������������������������������������������������������������
������������
������������(Escape Analysis)���������Java������������������������������������������������������������������������Java������������������������������������������������������������������������������������������������������������Java Hotspot������public class EscapeAnalysis {������//������������������public static Object object;������public void globalVariableEscape(){//������������������������������object = new Object();������}������public Object methodEscape(){ //���������������������������������return new Object();}������public void instancePassEscape(){ //������������������������������������this.speak(this);������}������public void speak(EscapeAnalysis escapeAnalysis){������������System.out.println("Escape Hello");������}}
1 ������������������������
public class Test { public static void main(String[] args) { for (int i = 0; i < 1000000; i++) { alloc(); } // ���������������������������������������������������sleep try { Thread.sleep(1000000); } catch (InterruptedException e1) { e1.printStackTrace(); } } private static void alloc() { User user = new User(); } static class User { }}
���jdk 1.7������������������������������������.������������������������100W���User������,������������������������10W���,���������������������������������.
������������������������������.idea������������������,���������������������,���������������������,������100W���,������������������100W������������������������.
-Xmx4G -Xms4G -XX:-DoEscapeAnalysis -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError
2 ������������
���������������������������������������������JAVA������������������������������������������int���long���������������������������reference������������������������������������������������������������������������������������������������������������JAVA���������������������������������������������������.������������������.���JIT������������������������������������������������������������������������������������������������JIT������������������������������������������������������������������������������������������������
3 ���������������
���������������������,���������StringBuffer���,������������������������������������,���������������������������������������.������������������������������������������.JIT������������������������,������StringBuffer������������������������������,������������������������������,������������������������������������������������.
public class Test { public static String getString(String s1, String s2) { StringBuffer sb = new StringBuffer(); sb.append(s1); sb.append(s2); return sb.toString(); } public static void main(String[] args) { long tsStart = System.currentTimeMillis(); for (int i = 0; i < 10000000; i++) { getString("TestLockEliminate ", "Suffix"); } System.out.println("���������������" + (System.currentTimeMillis() - tsStart) + " ms"); }}
���������������������������������������������������������������
���������������������������������������,���������������������������������������������������
发表评论
最新留言
关于作者
