世界上就两件事:“关你屁事”和“关我屁事”
JVM Learn 02 常量的那点东西
常量在编译阶段会存入调用这个常量的方法所在类的常量池中,本质上调用类并没有直接引用定义常量的类,因此并不会出发定义常量类的初始化。如果该常量值时动态生成的,则不会放在常量池中,会导致定义常量的类主动使
JVM Learn 03 理解类的初始化的一个简单例子
这是一个经典例子,很多面试题中出现过。首先引入正常的情况: 1package com.test.jvm.learn01; 2 3public class Main2 { 4 public static void main(String[] args) { 5 System.out.println(Counter.counter1); 6 System.out.println(Counter.counter2); 7 } 8} 9 10 11package com.test.jvm.learn01; 12 13public class Counter { 14 15 public static int counter1; 16 public static int counter2 = 0; 17 public static Counter counter = new Counter(); 18 19 private Counter() { 20 counter1++; 21 counter2++; 22 System.out.println(counter1); 23 System.out.println(counter2); 24 } 25 26 public static Counter
JVM Learn 04 类加载器(一)
基本概念 java的类加载器(class loader),用来将java的字节码文件(.class)读取到内存中,生成一个Java.lang.Class对象。通过Class类的newInstance()方
JVM Learn 05 类加载器(二)
父子类加载器的命名空间 类A中引用了类B,那么加载类B时,由类A的类加载器按照双亲委托机制尝试加载。子类加载器加载的类可以引用父类加载器加载的类,而父类加载器加载的类不能引用子类加载器加载的类。 测试案例
JVM Learn 06 类加载器(三)
继续前面两篇类加载器的内容,本篇补充总结类加载的一些关键问题。 Java的类加载器本身如何被加载? Java的根类加载器(Bootstrap Class Loader),由C++编写,它是内建在JVM方法区内的一块字