静态区
静态变量(又叫类变量,有static修饰)和静态方法存放在静态区;
使用某一个类的时候,需要将该类的字节码文件加载到元空间;
在加载的过程中,会先检查类中有没有static修饰的成员;
如果有,就会优先将static修饰的成员加载到静态区。
创建类的对象之后,对象存放在堆中,对象的变量名存放在栈中main方法的栈帧中,存放的数据是对象在堆中的地址,而该类的静态成员是被所有该类的对象而共享,修改的都是同一个

==================================================================
常量池(在内存中)
声明一个常量为a,值为abc,这个常量放在常量池中;
当创建第二个常量b时,发现值也是abc,在常量池中已经有了,那么直接就让b直接指向常量池中的abc,所以二者用==比较的结果是true。
当创建c时,是通过创建对象的方式,重新为c开辟了一块内存来存放它,所以用双等号比较的结果是false.

享元模式同理:数值类型的范围是-128~127,就是为了减少内存的使用
本文深入解析Java内存布局,重点讲解静态区与常量池的作用。静态变量与静态方法存储于静态区,由所有对象共享;常量池则优化内存使用,避免重复存储相同常量。文章还探讨了享元模式在数值类型中的应用。
900

被折叠的 条评论
为什么被折叠?



