上一篇说了类的加载 下面说下对象的创建,类加载以后会做以下事情
类加载检查:
检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。 如果没有,那必须先执行相应的类的加载过程。
具体 参考 http://www.jianshu.com/p/ac162726d7de 文章很棒
看完以后对类的加载和对象的分配打个比方
JVM 你们把他想象成一个 公司(一个加工厂类似富士康)
类 一个做产品的公司(类似 苹果和小米这些公司)
属性 类似 配置 方法类似 自己独有的操作系统(IOS android)
类 有自己的产品 没有自己的工程 就找到了JVM
JVM 看到类以后 进行加载(接单)
加载完以后 解析(解析分为 在公司里面找曾经是否有类似的产品,有就使用 没有就在造)
初始化 jvm 接单以后 做出了模型 现在开始生产 (初始化就是生成的过程)
在生产的时候 想象工程里面只有一条生产线(线程),有一个管理员(指针),指针指挥这个生产线上做什么,刚开始业务量比较小的时候只生成小米,发现一天生成线就够用,后来小米活了,增加了 米1 米2 米3 米4 等产品 JVM 还接了 苹果 魅族等业务, 指针的活就重,在一条生成线上不停的指挥,终于有一天累的指挥错了 把小米的配置安装到了苹果手机上,苹果手机亏损很多钱,就JVM 商量,承包一条生成线,JVM 给苹果公司买了一条生成线,并且上了一把锁 (synchroized)确保这条线上只生成苹果手机,这样就安全了