2019-09-09 20:29:56 卢浮宫 版权声明:本文为站长原创文章,转载请写明出处
JDK是最小的java开发环境;jre是标准的运行环境;JDK包含jre
①程序计数器 ②Java虚拟机栈 ③本地方法栈 ④Java堆 ⑤方法区
其中①②③是线程私有的;④⑤是线程共享的
1、程序计数器是一个较小的内存空间,是当前线程执行子界面的行号指示器
2、栈是线程私有的,生命周期与线程相同,用于存放局部变量,动态链接,方法出口等。
3、堆是比较打的,用于存放对象实例
4、方法区用于存放类信息,常量,静态变量等
从虚拟机角度来说
1、java虚拟机遇到new指令时首先检测这个指令参数能否在常量池中定位到一个类的引用符号以及这个符号
对应的类是否已经被加载、解析、初始化
2、接下来为新生对象分配内存,这个在类加载完成后便可确认
3、内存分配完成后将其分配的内存空间初始化为0值
4、对创建对象进行必要设置,如:类的元数据信息、对象的哈希码、GC分带年龄等
从程序来说
1、执行new指令
2、init初始化
3、OK