Java基础之对象存储

程序运行时,对象是如何安放的?内存又是如何分配的?

  • 有五个地方可以存储数据

寄存器

这是最快的存储区,因为它位于处理器内部。但存储器的数量极其有限,并且不被外部所控制和感知。

堆栈

位于通用RAM(随机访问存储器),通过堆栈指针操作内存,这同样是一个很快的存储区,仅次于寄存器存储区。创建程序时,java系统必须知道存储在堆栈内所有项的确切生命周期,对象的引用就存储在此,然而java对象并不存储于此。

一种通用的内存池(也位于RAM),用于存储所有的java对象。堆不同于栈的好处是:编译器不需要知道对象的生命周期,因此在堆里分配存储有很大灵活性,当然,为这种灵活性必须要付出相应的代价,用堆进行存储分配和清理可能比用栈进行存储分配花费更多的时间。

常量存储

常量值通常直接存储在程序代码内部,这样做是安全的,因为他们永远不会被改变。

非RAM存储

也就是硬盘,流对象和持久化对象存在于此。

你可能感兴趣的:(Java基础之对象存储)