java 内存空间_怎样用java实现存储空间动态分配
1、java是如何管理內(nèi)存的
Java的內(nèi)存管理就是對象的分配和釋放問題。(兩部分)
分配 :內(nèi)存的分配是由程序完成的,程序員需要通過關(guān)鍵字new 為每個對象申請內(nèi)存空間 (基本類型除外),所有的對象都在堆 (Heap)中分配空間。
釋放 :對象的釋放是由垃圾回收機(jī)制決定和執(zhí)行的,這樣做確實(shí)簡化了程序員的工作。但同時,它也加重了JVM的工作。因?yàn)?#xff0c;GC為了能夠正確釋放對象,GC必須監(jiān)控每一個對象的運(yùn)行狀態(tài),包括對象的申請、引用、被引用、賦值等,GC都需要進(jìn)行監(jiān)控。
2、 JVM的內(nèi)存區(qū)域組成
java把內(nèi)存分兩種:一種是棧內(nèi)存,另一種是堆內(nèi)存1。在函數(shù)中定義的基本類型變量和對象的引用變量都在函數(shù)的棧內(nèi)存中分配;2。堆內(nèi)存用來存放由new創(chuàng)建的對象和數(shù)組以及對象的實(shí)例變量 在函數(shù)(代碼塊)中定義一個變量時,java就在棧中為這個變量分配內(nèi)存空間,當(dāng)超過變量的作用域后,java會自動釋放掉為該變量所分配的內(nèi)存空間;在堆中分配的內(nèi)存由java虛擬機(jī)的自動垃圾回收器來管理
堆和棧的優(yōu)缺點(diǎn)
堆的優(yōu)勢是可以動態(tài)分配內(nèi)存大小,生存期也不必事先告訴編譯器,因?yàn)樗窃谶\(yùn)行時動態(tài)分配內(nèi)存的。
缺點(diǎn)就是要在運(yùn)行時動態(tài)分配內(nèi)存,存取速度較慢; 棧的優(yōu)勢是,存取速度比堆要快,僅次于直接位于CPU中的寄存器。
另外,棧數(shù)據(jù)可以共享。但缺點(diǎn)是,存在棧中的數(shù)據(jù)大小與生存期必須是確定的,缺乏靈活性。
取消
評論
總結(jié)
以上是生活随笔為你收集整理的java 内存空间_怎样用java实现存储空间动态分配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 节点_python在以太坊
- 下一篇: java结构体构建学生 学号_易错题: