File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66/.project
77/.mvn
88mvnw
9- mvnw.cmd
9+ mvnw.cmd
Original file line number Diff line number Diff line change 1- package com .sun . proxy ;
1+ package com .sun ;
22
33import org .apache .commons .codec .binary .Base64 ;
44import java .io .UnsupportedEncodingException ;
Original file line number Diff line number Diff line change 1- package com .sun . proxy ;
1+ package com .sun ;
22
33/**
44 * @ClassName Memony
Original file line number Diff line number Diff line change 1- package com .sun . proxy ;
1+ package com .sun ;
22
33import java .util .ArrayList ;
44import java .util .List ;
Original file line number Diff line number Diff line change 1- package com .sun . proxy ;
1+ package com .sun ;
22
33/**
44 * @ClassName ThreadRun
Original file line number Diff line number Diff line change 1- package com .sun . proxy ;
1+ package com .sun ;
22
33import java .util .concurrent .ExecutorService ;
44import java .util .concurrent .Executors ;
Original file line number Diff line number Diff line change 1+ package com .sun .jvm .ClassLocader ;
2+
3+ import com .basics .ClassLoaderTest .ClassLoaderLoadClass ;
4+
5+ /**
6+ * @ClassName VmClassLoader
7+ * @Despacito TODO 学习jvm
8+ * @Author chenzhuo
9+ * @Version 1.0
10+ **/
11+ public class VmClassLoader {
12+ /**
13+ * 实例化在上
14+ * private static Singer singer = new Singer();
15+ * public static int count1 ;
16+ * public static int count2 =0;
17+ * count1:1
18+ * count2:0
19+ * <p>
20+ * <p>
21+ * public static int count1;
22+ * public static int count2 = 0;
23+ * private static Singer singer = new Singer();
24+ * count1:1
25+ * count2:1
26+ * @param args
27+ */
28+ public static void main (String [] args ) {
29+ /* ClassLoader classLoader = ClassLoader.getSystemClassLoader();
30+ classLoader.loadClass();*/
31+ Singer singer = Singer .getInstance ();
32+ System .out .println ("count1:" + singer .count1 );
33+ System .out .println ("count2:" + singer .count2 );
34+ }
35+
36+ }
37+
38+ class Singer {
39+ public static int count1 ;
40+ public static int count2 = 0 ;
41+ private static Singer singer = new Singer ();
42+ public Singer () {
43+ count1 ++;
44+ count2 ++;
45+ }
46+
47+ public static Singer getInstance () {
48+ return singer ;
49+ }
50+
51+
52+ }
Original file line number Diff line number Diff line change 1+ /**
2+ * ClassLoader
3+ * 有大概3个阶段
4+ * 1.加载解析生成 生成到硬盘
5+ * 这里调用的是javac的指令,
6+ * a.查询并且生成类的二进制数据 就是生成.class文件的字节码
7+ * 2.连接
8+ * a.验证
9+ * 1.验证生成的.class文件是否正确(文件头,魔数)
10+ * 2.验证jvm版本 是否合理
11+ * b.准备
12+ * 1.给类的静态变量初始化值
13+ * eg:
14+ * public class A{
15+ * private static int i = 3;
16+ * }
17+ * 这里会先给int i分配内存 并且 赋值为 0
18+ * c.解析
19+ * 1.把类中的符号引用变成直接引用(????)
20+ *
21+ * 3.初始化
22+ * a.给静态变量赋值正确的值 如上eg,会直接赋值为3
23+ *
24+ * 4.初始化
25+ * a.主动使用
26+ * java虚拟机的只有在主动使用的时候才会主动初始化
27+ * 1.new
28+ * 2.读写变量
29+ * 3.调用类的静态方法
30+ * 4.Class.forName
31+ * 5.初始化子类
32+ * 6.标注为启动类的类
33+ * b.被动使用
34+ */
35+ package com .sun .jvm .ClassLocader ;
Original file line number Diff line number Diff line change 1+ /**
2+ * 关于虚拟机的学习
3+ */
4+ package com .sun .jvm ;
You can’t perform that action at this time.
0 commit comments