guang19
guang19
先把2中单例模式的代码贴上: 饿汉式:  懒汉式:  懒汉式的单例初始化时间在第一次调用的时候。 然后关于饿汉式的初始化时间,网上大部分传闻说: “饿汉式单例在类加载阶段就已经初始化了,典型的空间换时间...”。 首先痛斥下以讹传讹的前辈们,这并不是开发者的精神。 类的生命周期我给作者提过issue,再复习一下:加载,验证,准备,解析,初始化,使用,卸载。 我想问问前辈们,饿汉式的单例在以上哪个阶段被初始化了?哪里占内存空间了? 以我个人的理解:最多在准备阶段,会给类的静态字段的变量赋零值,引用类型为null。 然后就是那8个初始化时机会初始化饿汉式的单例。而8个时机里面,正常使用,只有第一次获取单例的时候才会初始化单例。 所以我说 饿汉式与懒汉式基本无二。
最近我在复习ClassLoader这一块,我用的jdk11,其实也不知道该不该说,毕竟这只是版本的不同. jdk9引入了模块化系统,取消了ExtensionClassLoader,新增了PaltformClassLoader.并且双亲委派机制也受到一定影响. 参考:https://yq.aliyun.com/articles/518315