程序运行时,对象是如何放置安排 内存如何分配
1)寄存器 这是最快的存储区,位于处理器内部,不能直接控制。
2)堆栈 位于通用RAM(随机访问存储器),通过指针可以通过指针 *** 作。java创建程序时系统必须知道堆栈内所有确切生命周期,限制了灵活性。所以虽然java某些数据存于堆栈中但是java对象不储存于其中。
3)堆 一种通用的内存池(也位于RAM)用于存放java对象。编译器不需要知道存储的数据在堆里存活多长时间,因此具有很大的灵活性,当需要对象时,只需要new一个。
4)常量存储 通常存放在代码内部
5)非RAM存储 流对象和持久化对象
2.基本类型boolean char int short long float double void byte、
3对象的作用域
java的对象不具备和基本类型一样的生命周期。当用new创建一个java对象时,它可以存活于作用域之外。由new创建的对象,只要你需要可以一直保留下去。
例如 String s = new String(“whatever”);
引用s在作用域终点就消失了。然而s指向的String对象会继续存在占据内存空间。
java处理这些对象的方法正是垃圾回收器,用来监视用new创建的所有对象,并辨别那些不在被引用的对象。释放哪些对象的内存空间。
static关键字通常来说创建类的时候不会直接创建类里的对象,除非用new创建类的对象,执行new时,数据存储空间才被分配。
但是如果想为特定域分配存储空间而不考虑究竟要创造多少对象,甚至是不创建对象。或者不创建对象就无法调用方法。
static可以满足这两方面的需要,声明一个事务是static就可以。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)