程序运行时java数据会保存到哪里,能更好的做到心中有数,对象,句柄等等是放到了内存哪里 以下是看了《java编程思想》的笔记
(1)寄存器:处于处理器内部,速度最快,服务器的寄存器数量有限,但我们程序员无法直接控制。
(2) 堆栈:常规RAM(随机访问存储器),通过堆栈指针获得处理支持指针上移释放内存、指针下移创建新的内存,这一块也是出寄存器最快、最有效的,有一缺陷:Java编译器必须准确知道堆栈内存保存的所有数据“长度”和“存在时间”,必须有相应代码来控制指针,这影响了程序灵活,所以对象并不放在这,但是这里放着java的一些数据和操作符,进栈出栈,尤为重要一点对象的句柄(特殊指针,或者说引用地址)保存在这。
(3)堆:是常规用途内存池,也是RAM,但这里保存了Java对象。编译器不必知道从堆里分配多少存储空间,也不必知道存储数据在堆里停留时间所以有更大灵活性不过牺牲了分配存储空间时花掉的时间。在Java程序里new命令出来的对象均是保存在这。
(4) 静态存储:静态是指位于固定位置,也在RAM上,static关键字可以指出一个对象元素是静态的,但Java对象本身永远不会置入静态存储空间。
(5)常数存储:出于安全,一般直接置于程序代码内部,因为他们永远不变。有的常数需要严格保护的,可以考虑置入只读存储器(ROM)里。
(6)非RAM存储:数据独立于程序之外,程序不运行能存在,处于程序控制范围之外。例“流式对象”于字节流转交另一台机器和“固定对象”于磁盘
最近看到一个笑话:
楼主:我是程序员,最近考虑换一行。
回复:/n
(1)寄存器:处于处理器内部,速度最快,服务器的寄存器数量有限,但我们程序员无法直接控制。
(2) 堆栈:常规RAM(随机访问存储器),通过堆栈指针获得处理支持指针上移释放内存、指针下移创建新的内存,这一块也是出寄存器最快、最有效的,有一缺陷:Java编译器必须准确知道堆栈内存保存的所有数据“长度”和“存在时间”,必须有相应代码来控制指针,这影响了程序灵活,所以对象并不放在这,但是这里放着java的一些数据和操作符,进栈出栈,尤为重要一点对象的句柄(特殊指针,或者说引用地址)保存在这。
(3)堆:是常规用途内存池,也是RAM,但这里保存了Java对象。编译器不必知道从堆里分配多少存储空间,也不必知道存储数据在堆里停留时间所以有更大灵活性不过牺牲了分配存储空间时花掉的时间。在Java程序里new命令出来的对象均是保存在这。
(4) 静态存储:静态是指位于固定位置,也在RAM上,static关键字可以指出一个对象元素是静态的,但Java对象本身永远不会置入静态存储空间。
(5)常数存储:出于安全,一般直接置于程序代码内部,因为他们永远不变。有的常数需要严格保护的,可以考虑置入只读存储器(ROM)里。
(6)非RAM存储:数据独立于程序之外,程序不运行能存在,处于程序控制范围之外。例“流式对象”于字节流转交另一台机器和“固定对象”于磁盘
最近看到一个笑话:
楼主:我是程序员,最近考虑换一行。
回复:/n