网上看到有用的知识, 摘录一下, Java的堆,栈和常量池的介绍和相关存储类型
1, 寄存器:
最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制;
2,栈:
存放基本类型的变量数据和对象的引用,但对象的本身不存放在栈中,而是存放在堆(new出来的对象)或常量池中(字符常量对象存放在常量池中)[即保存对象的引用地址];
3, 堆:
存放所有new出来的对象;
4, 静态域:
存放静态成员(static定义的成员)
5, 常量池:
存放字符串常量和基本类型常量;
栈和常量池中的对象可以共享;堆中的对象不可以共享;栈中的数据大小和生命周期是可以确定的,
当没有引用指向数据时,这个数据就消失,堆中的对象由垃圾回收器负责回收,因此大小和生命周期不需要确定,有很大的灵活性;