剖析底层
阿良老师教编程
好记性不如烂笔头
展开
-
何时触发类加载?
剖析底层何时触发类加载?首先,我们应该了解类加载的方式。1)显示加载:直接使用类的加载器进行加载.2)隐式加载a)构建类的对象b)访问类中的成员(分情况)好,我们直接上代码看看:class ClassC{//定义成员:类的属性和方法static int[] array = new int[1024];/**很多时候,比如我们只想访问c属性,不访问其它属性,那么如果使用Inte...原创 2019-07-26 20:13:15 · 672 阅读 · 0 评论 -
类加载时属性的初始化顺序问题
类加载时属性的初始化顺序问题今天我们来看一下类加载时属性的初始化顺序问题,首先我们来看一道笔试题。分析如下代码是否有问题?``java`import java.util.HashMap;import java.util.Map;class ClassE{static ClassE instance = new ClassE();static Map<String,Object...原创 2019-07-27 16:52:44 · 363 阅读 · 0 评论 -
通过延迟加载思想,优化资源使用
通过延迟加载思想,优化资源使用优化资源一直是我们的追求,下面这段代码展开如何通过延迟加载思想,优化资源使用。class ClassD{//定义一个静态数组static final int[] array = new int[1024];//在数组前加final修饰,没有作用,因为final是对象类型,没有编译时优化//依然加载类,初始化}//访问doSayHello(),类肯定会...原创 2019-07-27 17:22:54 · 156 阅读 · 0 评论 -
验证类的字节码对象唯一性
验证类的字节码对象唯一性//呈现类加载过程(通过配置就JVM参数实现)//-XX:+TraceClassLoadingpublic class TestClassObject01 { //main方法中的args用于接收程序运行时数据 public static void main(String[] args)throws Exception { System.out.println...原创 2019-07-27 17:28:34 · 1589 阅读 · 0 评论 -
静态代码块,在类加载时可以执行,但不一定会执行
静态代码块,在类加载时可以执行,但不一定会执行下面列举不同的类的加载方式,静态代码块的执行状况:class ClassA{ //静态代码块,在类加载时可以执行,但不一定会执行 static { System.out.println("static{}"); } }//-XX:+TraceClassLoadingpublic class TestClassObject02 { ...原创 2019-07-27 17:33:04 · 1284 阅读 · 0 评论 -
类加载过程
理解类加载过程如图,我们来捋一下类加载的过程原创 2019-07-28 17:36:46 · 148 阅读 · 0 评论 -
栈,堆,方法区内容存储示例
栈,堆,方法区存储示例首先我们来创建一个类://创建类class Student{ //用static关键字把属性变成静态的 static String name; int age; public void eat() { System.out.println("我在吃饭"); } //静态方法 public static void sleep() { Sy...原创 2019-09-20 10:14:16 · 391 阅读 · 0 评论