23. class A {
public static int execute() {
return 1 + 2;
}
public int bar() {
return 1 + 2;
}
}
class B implements IFoo{
public int bar() {
return 1 + 2;
}
}
public class Demo {
public void execute() {
A.execute();
A a = new A();
a.bar();
IFoo b = new B();
b.bar();
}
};
Compiled from "Demo.java"
public class Demo extends java.lang.Object{
public Demo();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<ini
4: return
public void execute();
Code:
0: invokestatic #2; //Method A.execute:()I
3: pop
4: new #3; //class A
7: dup
8: invokespecial #4; //Method A."<init>":()V
11: astore_1
12: aload_1
13: invokevirtual #5; //Method A.bar:()I
16: pop
17: new #6; //class B
20: dup
21: invokespecial #7; //Method B."<init>":()V
24: astore_2
25: aload_2
26: invokeinterface #8, 1; //InterfaceMethod IFoo.bar:(
31: pop
32: return
}
25. public class DemoStack {
public static void foo() {
int a = 1;
int b = 2;
int c = (a + b) * 5;
}
};
Compiled from "DemoStack.java"
public class DemoStack extends java.lang.Object{
public DemoStack();
Code:
0: aload_0
1: invokespecial #1; //Method
java/lang/Object."<init>":()V
4: return
public static void foo();
Code:
0: iconst_1//定丿常量1,压入栈
1: istore_0//弹出栈顶存到局部变量区0
2: iconst_2//定丿常量2,压入栈
3: istore_1//弹出栈顶存到局部变量区1
4: iload_0//加载局部变量区0
5: iload_1//加载局部变量区1
6: iadd//加法结果,压入栈
7: iconst_5//定丿常量,压入栈
8: imul//乘法结果,压入栈
9: istore_2//弹出栈顶存到局变量去2
10: return
}
54. 幵行回收GC(Parallel Scavenge)
• 丼例:DemoPSGC.java
public class DemoPSGC {
public static void main(String args[]) throws Exception {
Thread.sleep(30000);
byte[] bytes = new byte[1024*1024*2];//2MB
Thread.sleep(1000);
byte[] bytes2 = new byte[1024*1024*2];//2MB
Thread.sleep(1000);
byte[] bytes3 = new byte[1024*1024*2];//2MB
System.out.println("ready to direct allocate to old");
Thread.sleep(1000);
byte[] bytes4 = new byte[1024*1024*4];//4MB
Thread.sleep(1000);
}
};
56. 幵行回收GC(Parallel Scavenge)
• 打印GC日志:
• 控制台输出:
java -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -
XX:+UseParallelGC -verbose:GC -XX:+PrintGCDetails
DemoPSGC
[@10_10_82_80 test]# java -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -XX:+UseParallelGC -
verbose:GC -XX:+PrintGCDetails DemoPSGC
ready to direct allocate to old
Heap
PSYoungGen total 9216K, used 6635K [0x00002aaab4000000, 0x00002aaab4a00000,
0x00002aaab4a00000)
eden space 8192K, 81% used [0x00002aaab4000000,0x00002aaab467af90,0x00002aaab4800000)
from space 1024K, 0% used [0x00002aaab4900000,0x00002aaab4900000,0x00002aaab4a00000)
to space 1024K, 0% used [0x00002aaab4800000,0x00002aaab4800000,0x00002aaab4900000)
PSOldGen total 10240K, used 4096K [0x00002aaab3600000, 0x00002aaab4000000,
0x00002aaab4000000)
object space 10240K, 40% used [0x00002aaab3600000,0x00002aaab3a00018,0x00002aaab4000000)
PSPermGen total 21248K, used 2513K [0x00002aaaae200000, 0x00002aaaaf6c0000,
0x00002aaab3600000)
object space 21248K, 11% used [0x00002aaaae200000,0x00002aaaae4745f8,0x00002aaaaf6c0000)