對象存儲java
這里你採納與否沒關系,給你說說編程與內存的關系。你定義的任何變數,常量,類,方法等等,其實都在內存中,沒有所謂的把數據存內存中,這概念,你可以想一下電腦重啟或關機後,內存中的所有數據,都會丟失,除非你保存到磁碟中去。在內存中的數據有兩塊,第一、緩沖,一般寫數據到磁碟的時候開辟出來的內存空間;第二、緩存,一般是從磁碟讀數據到內存中開辟出來的內存空間。會這么使用,原因很簡單,磁碟讀寫數據速度與內存不一致(磁碟的存取效率遠遠小於內存的存取效率),為了提高數據的存取效率,才會這么乾的。一般而言,java中的所謂數據,大部分都是類,從自動引用計數的概念來分析,你想把對象長久的放在內存中,不會被垃圾回收機制釋放,注意制葯有一個對象在使用/引用你的數據,這條數據就會存在內存中。所以,想servlet中的全局配置參數,隨時可以取到還是唯一一份,你可以參考一下。另外內存使用分堆與棧,堆在面向對象編程中存儲對象的,棧是方法或函數執行的時候臨時開辟的存儲空間,方法或函數執行完畢就會釋放。希望我的回復能幫助到你,採納與否沒關系。有更好的答案,我就隱藏我的回復。
2. java中的對象是怎麼存儲的
stack 區存放函數參數和局部變數;
heap 區存放對象;
data 區存放static 的變數或者字元串常量;
code 區存放類中的方法;
stack 棧 -->放方法的參數 和局部變數.就像這樣
-----------
void test(String[] args){
int xx = 0;// args和 xx在jvm load class時存放在棧中
}
heap 堆 --> 堆要比棧要大得多. 當一個對象對new出來時,該對象放在heap中,對象引用放在棧中.
data區,也就是數據區 -->靜態的變數 和 string的常量.
code 代碼區 --->classloader類載入器載入該class時存放類中的方法.
3. java對象在內存中存儲的問題。
棧裡面就是放new出的對象的地址以及放那幾個基本類型。堆裡面就是放的你new出來的對象。另外還有個數據池,裡面放的就是你弄出來的字元串,一個字元串只存在於內存中一份,就是擱在這池子里的。就比如你弄個String str1="abc";String str2="abc"; str1==str2;是TRUE
4. java存儲對象求助
要點:
首先要你的類必須實現Serializable介面,這樣對象才能被序列或反序列化;
至於io讀寫操作是java基礎且重要的,要自己去學習練習,建議自己下去寫。
5. Java中數組對象的存儲位置
原帖地址:http://hi..com/sqldebug/blog/item/9758b9ffa605e51a09244d91.html
數組單一說在棧中還是堆中都是錯誤的,分為幾種情況:
1、固定數組在函數體內分配是在棧中的
我們做一個試驗,一般DELPHI程序線程的棧大小是1M,如果我們函數體中申請4M大小的數組,報棧溢出,則表示數據的大小是在棧中的。
const
CArrayCount = 1024*1024*4;
procere TForm1.btnMainThreadClick(Sender: TObject);
var
MainThreadArray: array[1..CArrayCount] of Char;
i: Integer;
begin
for i := Low(MainThreadArray) to High(MainThreadArray) do
MainThreadArray[i] := #0;
end;
我把以上代碼在主線程中測試時,確實報了棧溢出,如果這時你把DELPHI程序的棧調大為6M則正確,表示在函數體中申請的數組是在棧中的。
2、固定數組在類中分配是在堆中的
我們在類中加一下定義語句
FFixArray: array[1..CArrayCount] of Char;
程序正常,表示在類中分配固定數組是在堆中的。
3、固定數組全局變數是在堆中的
我們在程序定義全部數組
GFixArray: array[1..CArrayCount] of Char;
程序也正常,表示全局固定長度是在堆中的。
3、動態數組不管在函數體中、類中、全局變數都是在堆中
如果你會匯編,看一下匯編就明白了。DELPHI這么實現是合理的,在函數里中分配的固定長度數組放在棧中可以加快運行效率,而且在多線程的情況下,不用像堆分配有加鎖。只是大家在寫程序的過程中注意在函數里定義太長的數組需要注意,否則棧溢出,程序就崩潰了。
6. Java 中怎麼將一個對象存儲到資料庫
sqlite不能直接存對象,只能一個一個取出來 再存,想直接存對象也可以,看看db4o,也是個資料庫 ,需要支持包 ,網路一下
7. java的方法中new的對象存儲在內存中那個區域
這個對象存在堆中,還是棧中?
答:堆,new一個對象,一定是在堆中
方法內部new出來的對象,在哪裡存著?
答:堆,new出來對象的實例變數都存在堆上面。
棧,這個東西,需要理解為:線程運行時,才會創建,執行完,就沒了。
Person p = new Person();
上面這段代碼,在執行時,p壓入棧,通過局部變數表,找到對應的【實例數據】,執行完畢後釋放。
8. Java對象存儲到什麼地方
一個對象有屬性有方法,new這個對象的時候內存中就存在了這個對象
9. Java的對象的內容在堆內存中的存儲形式是怎樣的
java中數組是以對象形式存在的,棧中存儲的是數組對象的地址(即引用),而對象本身不存放在棧中,而是存放在堆中,使用時通過棧中的引用地址找到堆中的實際對象,這里的引用地址類似於C/C++中的指針。