- 浏览: 211085 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
Prepared:
Hadoop的几个明显缺点 -
CSunDNan:
...
openjdk jvm 方法字节码执行过程 -
幻影之蚀:
...
mysql 源码分析2 源码调试环境建立 -
shukongchengje:
紧急呼唤楼主,mysql代码从哪里弄?官网wiki上看的一头雾 ...
mysql源码分析 整体架构 -
yeshaoting:
好文章.不介意的话转载了.
jvm 字节码中文含义
简单测试:
1 Test.java
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 10;
int d = a + b;
}
}
2 运行:
E:\jvm>javac Test.java
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_1
3: istore_2
4: bipush 10
6: istore_3
7: iload_1
8: iload_2
9: iadd
10: istore 4
12: return
}
If else测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 2;
if( a > b ) {
c++;
} else if ( a < c ) {
c--;
} else {
c = c + 10;
}
System.out.println(c);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
1
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_1
3: istore_2
4: iconst_2
5: istore_3
6: iload_1
7: iload_2
8: if_icmple 17
11: iinc 3, 1
14: goto 33
17: iload_1
18: iload_3
19: if_icmpge 28
22: iinc 3, -1
25: goto 33
28: iload_3
29: bipush 10
31: iadd
32: istore_3
33: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
36: iload_3
37: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
40: return
}
Do while测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int result = 0;
do {
result += a;
a++;
} while(a<100);
System.out.println(result);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
4950
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_2
5: iload_1
6: iadd
7: istore_2
8: iinc 1, 1
11: iload_1
12: bipush 100
14: if_icmplt 4
17: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
20: iload_2
21: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
24: return
}
While do测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int result = 0;
while (a < 100) {
result += a;
a++;
}
System.out.println(result);
}
}
运行测试:
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_1
5: bipush 100
7: if_icmpge 20
10: iload_2
11: iload_1
12: iadd
13: istore_2
14: iinc 1, 1
17: goto 4
20: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
23: iload_2
24: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
27: return
}
循环体测试:
1 Test.java
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
double i;
for (i = 10; i < 100.0; i++) {
;
}
}
}
2 运行:
E:\jvm>javac Test.java
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: ldc2_w #2; //double 10.0d
3: dstore_1
4: dload_1
5: ldc2_w #4; //double 100.0d
8: dcmpg
9: ifge 19
12: dload_1
13: dconst_1
14: dadd
15: dstore_1
16: goto 4
19: return
}
Switch语句测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int c = 10;
switch (a) {
case 0 : c++;
break;
case 1 : c--;
break;
default: c++;
}
System.out.println(c);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
11
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: bipush 10
4: istore_2
5: iload_1
6: lookupswitch{ //2
0: 32;
1: 38;
default: 44 }
32: iinc 2, 1
35: goto 47
38: iinc 2, -1
41: goto 47
44: iinc 2, 1
47: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
50: iload_2
51: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
54: return
}
参数传递:
public class Test {
public static void main(String[] args) {
int c = add(1,2);
System.out.println(c);
}
private static int add(int a, int b) {
return a + b;
}
}
运行测试:
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: iconst_2
2: invokestatic #2; //Method add:(II)I
5: istore_1
6: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;
9: iload_1
10: invokevirtual #4; //Method java/io/PrintStream.println:(I)V
13: return
}
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 10;
int c = 0;
try {
int i = 1 / c;
} catch(Exception e)
{
//
}
finally{
}
}
}
E:\jvm>javac Test.java
E:\jvm>java Test
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: istore_1
2: bipush 10
4: istore_2
5: iconst_0
6: istore_3
7: iconst_1
8: iload_3
9: idiv
10: istore 4
12: goto 25
15: astore 4
17: goto 25
20: astore 5
22: aload 5
24: athrow
25: return
Exception table:
from to target type
7 12 15 Class java/lang/Exception
7 12 20 any
15 17 20 any
20 22 20 any
}
synchronized(args)
3: monitorenter
4: aload_1
5: monitorexit
Exception table:
from to target type
4 6 9 any
9 12 9 any
Field 测试:
Test.java
public class Test {
public static String username = "username";
private static int age = 0;
public static void main(String[] args) {
String name = username;
System.out.println(name);
}
}
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public static java.lang.String username;
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field username:Ljava/lang/String;
3: astore_1
4: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;
7: aload_1
8: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/Str
ing;)V
11: return
static {};
Code:
0: ldc #5; //String username
2: putstatic #2; //Field username:Ljava/lang/String;
5: iconst_0
6: putstatic #6; //Field age:I
9: return
}
Person类及编译结果:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
private int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
E:jvm>javap -c Person
Compiled from "Person.java"
public class Person extends java.lang.Object...{
java.lang.String name;
int age;
public Person();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public void setAge(int);
Code:
0: aload_0
1: iload_1
2: putfield #2; //Field age:I
5: return
public void setName(java.lang.String);
Code:
0: aload_0
1: aload_1
2: putfield #3; //Field name:Ljava/lang/String;
5: return
}
Inner Class:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
class ManPerson extends Person ...{
int getAge()...{
return super.getAge();
}
}
E:jvm>javap -c Person
Compiled from "Person.java"
public class Person extends java.lang.Object...{
java.lang.String name;
int age;
public Person();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public void setAge(int);
Code:
0: aload_0
1: iload_1
2: putfield #2; //Field age:I
5: return
public void setName(java.lang.String);
Code:
0: aload_0
1: aload_1
2: putfield #3; //Field name:Ljava/lang/String;
5: return
int getAge();
Code:
0: aload_0
1: getfield #2; //Field age:I
4: ireturn
}
E:jvm>
类的调用实例:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
class ManPerson extends Person ...{
int getAge()...{
return super.getAge();
}
}
public class Test...{
public static void main(String[] args)...{
System.out.println("test");
Person p = new Person();
p.setName("psetName");
p.setAge(22);
System.out.println(p.getAge());
}
}
翻译结果:
E:jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object...{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String test
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/Str
ing;)V
8: new #5; //class Person
11: dup
12: invokespecial #6; //Method Person."<init>":()V
15: astore_1
16: aload_1
17: ldc #7; //String psetName
19: invokevirtual #8; //Method Person.setName:(Ljava/lang/String;)V
22: aload_1
23: bipush 22
25: invokevirtual #9; //Method Person.setAge:(I)V
28: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
31: aload_1
32: invokevirtual #10; //Method Person.getAge:()I
35: invokevirtual #11; //Method java/io/PrintStream.println:(I)V
38: return
}
1 Test.java
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 10;
int d = a + b;
}
}
2 运行:
E:\jvm>javac Test.java
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_1
3: istore_2
4: bipush 10
6: istore_3
7: iload_1
8: iload_2
9: iadd
10: istore 4
12: return
}
If else测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int b = 1;
int c = 2;
if( a > b ) {
c++;
} else if ( a < c ) {
c--;
} else {
c = c + 10;
}
System.out.println(c);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
1
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_1
3: istore_2
4: iconst_2
5: istore_3
6: iload_1
7: iload_2
8: if_icmple 17
11: iinc 3, 1
14: goto 33
17: iload_1
18: iload_3
19: if_icmpge 28
22: iinc 3, -1
25: goto 33
28: iload_3
29: bipush 10
31: iadd
32: istore_3
33: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
36: iload_3
37: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
40: return
}
Do while测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int result = 0;
do {
result += a;
a++;
} while(a<100);
System.out.println(result);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
4950
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_2
5: iload_1
6: iadd
7: istore_2
8: iinc 1, 1
11: iload_1
12: bipush 100
14: if_icmplt 4
17: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
20: iload_2
21: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
24: return
}
While do测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int result = 0;
while (a < 100) {
result += a;
a++;
}
System.out.println(result);
}
}
运行测试:
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: iconst_0
3: istore_2
4: iload_1
5: bipush 100
7: if_icmpge 20
10: iload_2
11: iload_1
12: iadd
13: istore_2
14: iinc 1, 1
17: goto 4
20: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
23: iload_2
24: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
27: return
}
循环体测试:
1 Test.java
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
double i;
for (i = 10; i < 100.0; i++) {
;
}
}
}
2 运行:
E:\jvm>javac Test.java
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: ldc2_w #2; //double 10.0d
3: dstore_1
4: dload_1
5: ldc2_w #4; //double 100.0d
8: dcmpg
9: ifge 19
12: dload_1
13: dconst_1
14: dadd
15: dstore_1
16: goto 4
19: return
}
Switch语句测试:
public class Test {
public static void main(String[] args) {
int a = 0;
int c = 10;
switch (a) {
case 0 : c++;
break;
case 1 : c--;
break;
default: c++;
}
System.out.println(c);
}
}
运行测试:
E:\jvm>javac Test.java
E:\jvm>java Test
11
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_0
1: istore_1
2: bipush 10
4: istore_2
5: iload_1
6: lookupswitch{ //2
0: 32;
1: 38;
default: 44 }
32: iinc 2, 1
35: goto 47
38: iinc 2, -1
41: goto 47
44: iinc 2, 1
47: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
50: iload_2
51: invokevirtual #3; //Method java/io/PrintStream.println:(I)V
54: return
}
参数传递:
public class Test {
public static void main(String[] args) {
int c = add(1,2);
System.out.println(c);
}
private static int add(int a, int b) {
return a + b;
}
}
运行测试:
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: iconst_2
2: invokestatic #2; //Method add:(II)I
5: istore_1
6: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;
9: iload_1
10: invokevirtual #4; //Method java/io/PrintStream.println:(I)V
13: return
}
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 10;
int c = 0;
try {
int i = 1 / c;
} catch(Exception e)
{
//
}
finally{
}
}
}
E:\jvm>javac Test.java
E:\jvm>java Test
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: istore_1
2: bipush 10
4: istore_2
5: iconst_0
6: istore_3
7: iconst_1
8: iload_3
9: idiv
10: istore 4
12: goto 25
15: astore 4
17: goto 25
20: astore 5
22: aload 5
24: athrow
25: return
Exception table:
from to target type
7 12 15 Class java/lang/Exception
7 12 20 any
15 17 20 any
20 22 20 any
}
synchronized(args)
3: monitorenter
4: aload_1
5: monitorexit
Exception table:
from to target type
4 6 9 any
9 12 9 any
Field 测试:
Test.java
public class Test {
public static String username = "username";
private static int age = 0;
public static void main(String[] args) {
String name = username;
System.out.println(name);
}
}
E:\jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object{
public static java.lang.String username;
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field username:Ljava/lang/String;
3: astore_1
4: getstatic #3; //Field java/lang/System.out:Ljava/io/PrintStream;
7: aload_1
8: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/Str
ing;)V
11: return
static {};
Code:
0: ldc #5; //String username
2: putstatic #2; //Field username:Ljava/lang/String;
5: iconst_0
6: putstatic #6; //Field age:I
9: return
}
Person类及编译结果:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
private int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
E:jvm>javap -c Person
Compiled from "Person.java"
public class Person extends java.lang.Object...{
java.lang.String name;
int age;
public Person();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public void setAge(int);
Code:
0: aload_0
1: iload_1
2: putfield #2; //Field age:I
5: return
public void setName(java.lang.String);
Code:
0: aload_0
1: aload_1
2: putfield #3; //Field name:Ljava/lang/String;
5: return
}
Inner Class:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
class ManPerson extends Person ...{
int getAge()...{
return super.getAge();
}
}
E:jvm>javap -c Person
Compiled from "Person.java"
public class Person extends java.lang.Object...{
java.lang.String name;
int age;
public Person();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public void setAge(int);
Code:
0: aload_0
1: iload_1
2: putfield #2; //Field age:I
5: return
public void setName(java.lang.String);
Code:
0: aload_0
1: aload_1
2: putfield #3; //Field name:Ljava/lang/String;
5: return
int getAge();
Code:
0: aload_0
1: getfield #2; //Field age:I
4: ireturn
}
E:jvm>
类的调用实例:
public class Person ...{
String name;
int age;
public void setAge(int age)
...{
this.age = age;
}
public void setName(String name)
...{
this.name = name;
}
int getAge()
...{
return age;
}
private String getName()
...{
return name;
}
}
class ManPerson extends Person ...{
int getAge()...{
return super.getAge();
}
}
public class Test...{
public static void main(String[] args)...{
System.out.println("test");
Person p = new Person();
p.setName("psetName");
p.setAge(22);
System.out.println(p.getAge());
}
}
翻译结果:
E:jvm>javap -c Test
Compiled from "Test.java"
public class Test extends java.lang.Object...{
public Test();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String test
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/Str
ing;)V
8: new #5; //class Person
11: dup
12: invokespecial #6; //Method Person."<init>":()V
15: astore_1
16: aload_1
17: ldc #7; //String psetName
19: invokevirtual #8; //Method Person.setName:(Ljava/lang/String;)V
22: aload_1
23: bipush 22
25: invokevirtual #9; //Method Person.setAge:(I)V
28: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
31: aload_1
32: invokevirtual #10; //Method Person.getAge:()I
35: invokevirtual #11; //Method java/io/PrintStream.println:(I)V
38: return
}
发表评论
-
Java类的初始化过程详解
2010-04-11 17:09 1229java是多线程的,所以类 ... -
jvm 字节码中文含义
2010-04-08 11:31 3627栈和局部变量操作 将常 ... -
诡异的JVM Crash之EXCEPTION_STACK_OVERFLOW
2010-04-08 11:08 1747关于JVM的一个常识是:如果对象被意外地持有很容易造成内存泄漏 ... -
jvm 初始化
2010-04-07 16:01 1181void vm_init_globals() { chec ... -
jvm gc
2010-04-06 23:52 1017jvm gc -
jvm exception
2010-04-06 23:52 851jvm exception -
jvm method invoke
2010-04-06 23:51 1080jvm method invoke -
jvm interpreter
2010-04-06 23:51 1249jvm interpreter 解释器的初始化 JNI_Cr ... -
jvm运行时数据结构
2010-04-06 23:50 909jvm运行时数据结构 -
jvm class与instance运行时结构
2010-04-06 23:49 871jvm class与instance运行时结构 -
jvm dll加载分析
2010-04-06 23:48 1172jvm dll加载分析 -
java class文件格式
2010-04-06 23:43 1424struct ClassFile { u4 magic; ... -
汇编语言与计算机体系结构--使用C++和Java
2010-04-06 15:16 1688第1章数制1 1.1简介1 1.2按位记数制1 1.3各数制的 ... -
JVM内存管理及垃圾回收机制
2010-04-06 09:30 854JAVA在内存中由 Perm 和 He ... -
IBM Java Jvm GC实现内幕 (几年前的老文)
2010-04-05 14:39 839好言归正传,按照Sam Borman的说法IBM java 1 ... -
修复 Java 内存模型,第 1 部分(什么是 Java 内存模型,最初它是怎样被破坏的?)
2010-03-30 14:16 1046Java 平台把线程和多处理技术集成到了语言中,这种集成程度比 ... -
JVM内存结构
2010-03-29 15:25 816(1)类装载子系统 装载 连 ... -
Java轻量级锁原理详解(Lightweight Locking)
2010-03-29 15:21 790Java轻量级锁原理详解(Lightweight Lockin ... -
解析 Java 类和对象的初始化过程
2010-03-29 15:15 1062类的初始化和对象初始 ... -
解析 Java 类和对象的初始化过程
2010-03-29 15:14 743类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要 ...
相关推荐
字节码是平台无关的,这意味着它能在任何支持Java虚拟机(JVM)的系统上运行。通过查看反编译的字节码,我们可以看到类的方法定义、变量声明、控制流结构等,这些都是原始Java源代码的逻辑表示。 在JD-GUI中,我们...
Java字节码和Lambda表达式之间的关系体现在JVM的LambdaMetafactory机制上,它负责在运行时动态生成对应的函数式类。Lambda表达式在编译后的`.class`文件中,通常以`ClassName$Lambda$1`这样的形式命名,其中`...
JVM(Java Virtual Machine)是 JDK 的核心组成部分,它负责执行字节码,提供了一个“一次编写,到处运行”的环境。JVM 的源码对于理解 Java 性能优化、垃圾回收机制、类加载过程以及内存管理等方面有着至关重要的...
当前构建状态:高水平目标能够将JVM字节码交叉编译为JavaScript,WebAssembly,OpenCL和其他语言主要的编译目标是JavaScript和WebAssembly ...OpenJDK 14作为JRE Classlib支持编译策略JVM字节码被解析并转换为中间表示...
类加载器负责加载字节码文件,运行时数据区包括堆内存、栈内存、方法区、程序计数器和本地方法栈。执行引擎执行字节码,本地方法接口用于调用非Java语言实现的库。 2. **类加载机制**:JVM采用双亲委派模型进行类...
源代码的获取和编译使得开发者可以深入理解JVM内部机制,包括垃圾回收、类加载、字节码执行等核心部分,同时也能根据需求进行定制化修改。 文件"openjdk-7u75-b13-linux-x64-18_dec_2014.tar.gz"包含了OpenJDK7的...
7. **代码分析**:通过对OpenJDK源代码的深入分析,开发者可以学习到JVM如何管理内存、如何执行字节码、垃圾收集是如何工作的,以及Javac如何进行类型检查和优化等复杂话题。 通过研究这个压缩包中的内容,开发者...
OpenJDK 6还包含HotSpot虚拟机,这是一个高性能的JVM实现,具有动态编译功能,可以将频繁执行的字节码转换为机器码以提高运行速度。 "openjdk-6-6b31-1.13.3.orig"是压缩包内的一个文件,可能是源代码或者编译后的...
2. 字节码执行:Java的字节码由JVM负责解释执行。OpenJDK的HotSpot虚拟机中,通过即时编译(JIT)技术将热点代码转换为机器码,提高运行速度。 3. 类库实现:Java的标准类库如集合框架、I/O流、网络通信等,其底层...
Java虚拟机(JVM)是Java程序运行的核心,它负责解释和执行字节码,为Java应用程序提供了一个跨平台的运行环境。JDK(Java Development Kit)包含了开发和运行Java程序所需的所有工具,包括JVM。当我们谈论"jdk,jvm...
JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而无需修改代码。本文将详细探讨这些概念: 1. JVM原理:JVM的工作原理涉及类加载器(ClassLoader)、类...
Java虚拟机(JVM)是Java程序运行的核心组件,它负责解释和执行字节码,为Java应用程序提供跨平台的运行环境。开源JVM平台为开发者提供了深入理解JVM内部工作原理以及定制化JVM的可能性。"jvm虚拟机开源平台"这个...
1. **JVM(Java Virtual Machine)**:Java虚拟机,它是Java程序运行的平台,负责解释和执行字节码。 2. **JRE(Java Runtime Environment)**:Java运行时环境,提供了运行Java应用程序所需的库和环境。 3. **JDK...
Java虚拟机是OpenJDK的核心部分,它是Java平台的基石,负责执行字节码并提供平台无关的运行环境。JVM使得Java程序能够在任何支持Java的平台上运行,无需重新编译。1.7版本,也被称为Java 7,引入了多项重要的新特性...
JVM是Java程序运行的平台,它负责将字节码转换为机器码执行。在OpenJDK源码中,你可以找到JVM的主要组件,如类加载器、执行引擎、内存管理(包括垃圾收集器,如G1、ZGC等)和性能优化策略。例如,HotSpot虚拟机是...
Javac将源代码转换为字节码,这是一种平台无关的中间表示,可以在任何支持JVM的设备上运行。JDK7引入了诸如钻石操作符、try-with-resources语句和多线程并发API的改进等新特性,这些都在源码中有体现。 接下来是...
1. JVM实现:通过阅读OpenJDK6的源代码,开发者可以深入理解JVM如何解析和执行字节码,以及垃圾回收的实现细节。 2. 类库设计:OpenJDK6的源代码包含了丰富的类库,比如集合框架、I/O流、网络通信等,这些都是Java...
2. **javac**: Java编译器,用于将源代码编译成可执行的字节码。 3. **java**: Java命令行工具,用于启动Java应用程序。 4. **javadoc**: 工具用于生成Java API文档。 5. **jar**: 工具用于创建、管理和提取Java归档...
JVM是运行Java字节码的抽象计算机,是Java平台的一个重要组成部分,允许Java应用程序在不同的操作系统上运行而无需重新编译。JVM有多种实现,其中最著名的是HotSpot虚拟机,它是Oracle JDK和OpenJDK的默认虚拟机。 ...
4. **字节码执行**:JVM通过解释器或即时编译器(JIT)来执行字节码。解释器逐行解释执行,而JIT将热点代码编译成机器码,提升运行效率。 5. **内存管理**:JVM自动进行垃圾收集,管理堆内存。它采用分代收集算法,...