導航:首頁 > 安裝方法 > java對象方法分配到哪裡

java對象方法分配到哪裡

發布時間:2022-09-14 13:48:07

A. Java中成員變數分配在哪個空間

變數分為成員變數和局部變數;
成員變數又分為實例變數和靜態變數;
實例變數在對象創建的時候分配內存空間,存儲在堆內存中;
靜態變數在類載入的時候分配內存空間,存儲在元空間;
局部變數在方法執行時分配內存空間,存儲在棧內存中。

B. java new一個對象時,它的方法在內存中嗎他是怎樣實現方法調用的

類信息在虛擬機的方法區中,對象信息在堆中。
你調用一個對象的方法時,它會到方法區找此對象對應的類信息,如果是調用方法,有一個方法表會讓機器快速找到此方法的位元組碼,然後調用。
方法的執行過程是在虛擬機的棧里進行。
具體的過程挺復雜。要把方法區,堆,棧都講清楚。

C. JAVA中類中的方法存儲在什麼地方

類載入時 方法信息保存在一塊稱為方法區的內存中, 並不隨你創建對象而隨對象保存於堆中。可參考《深入java虛擬機》前幾章。
另參考(他人文章):
如果instance method也隨著instance增加而增加的話,那內存消耗也太大了,為了做到共用一小段內存,Java 是根據this關鍵字做到的,比如:instance1.instanceMethod(); instance2.instanceMethod(); 在傳遞給對象參數的時候,Java 編譯器自動先加上了一個this參數,它表示傳遞的是這個對象引用,雖然他們兩個對象共用一個方法,但是他們的方法中所產生的數據是私有的,這是因為參數被傳進來變成call stack內的entry,而各個對象都有不同call stack,所以不會混淆。其實調用每個非static方法時,Java 編譯器都會自動的先加上當前調用此方法對象的參數,有時候在一個方法調用另一個方法,這時可以不用在前面加上this的,因為要傳遞的對象參數就是當前執行這個方法的對象。

D. Java中對象都是分配在堆上嗎

棧與堆都是Java用來在Ram中存放數據的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。Java的堆是一個運行時數據區,類的對象從中分配空間。這些對象通過new、newarray、anewarray和multianewarray等指令建立,它們不需要程

E. java中的方法代碼存在了哪裡

類的實例方法在內存中是只有一份,不過肯定不會是第一個對象中,如果是第一個對象的話,那麼當第一個對象被銷毀的時候,那麼後面的對象就永遠無法調用了...
類的實例方法存在一個專門的區叫方法區,事實上類剛裝載的時候就被裝載好了,不過它們在"睡眠",只是這些方法必須當有對象產生的時候才會"蘇醒".(比如,一個輸出類的成員變數的方法,如果連對象都沒有,何來的輸出成員變數).所以,方法在裝載的時候就有了,但是不可用,因為它沒有指象任何一個對象。

而靜態的又不一樣了,靜態的東西存在靜態區,他們和類是一個等級的,就是說只要類被裝載,它們就可以直接用.(用類名來調用).他們不依賴與任何對象,所以也不能輸出任何對象的成員屬性.(除非成員屬性也是靜態的).

而你最後的一句話也是錯的,"類的所有數據在內存中只有靜態的才又空間".
當然不是,每個對象在new的時候都會在堆區中開辟內存,用來保存對象的屬性和方法.(實際上方法保存的只是方法區的引用,如果保存的是方法本身,那麼試想一下,有多少個對象就得有多少個方法,那麼又和第一點中"實例方法在內存中只有一份拷貝"相矛盾了)

好了,事實上內存圖很復雜和麻煩,算比較深的東西了,很多用JAVA多年的人也不太了解其原理,因為開發也不要用..

更多的問題可以去遠標培訓去問技術老師。

F. java的方法中new的對象存儲在內存中那個區域

這個對象存在堆中,還是棧中?
答:堆,new一個對象,一定是在堆中
方法內部new出來的對象,在哪裡存著?
答:堆,new出來對象的實例變數都存在堆上面。

棧,這個東西,需要理解為:線程運行時,才會創建,執行完,就沒了。
Person p = new Person();
上面這段代碼,在執行時,p壓入棧,通過局部變數表,找到對應的【實例數據】,執行完畢後釋放。

G. JAVA中實例化一個對象,成員方法中的參數會在哪分配內存(棧/堆)

成員方法?
JAVA中實例化一個對象 會實例該類中的一些成員變數
成員變數也要看是具體對象 還是基礎變數 基礎變數存儲在 棧中
而具體對象引用存在於棧中 具體內容存在堆中

一些特殊的變數 比如靜態變數會在類載入的時候在特殊的靜態區分配

L樓主說是成員方法??? 實例化對象 對成員方法中的參數是不產生影響的 只有實例對象調用方法的時候 其具體涉及到的方法體內的局部變數才會在內存中分配

分配方式依然是: java基礎變數 和java對象
基礎變數存儲在 棧中
而具體對象引用存在於棧中 具體內容存在堆中

H. JAVA中實例化一個對象,成員方法中的參數會在哪分配內存(棧/堆)

首先內存總體分為了4個部分,包括 stack segment 、heap segment、code segment 、data segment ;
其中我們程序中用關鍵字new出來的東西都是存放在heap segment;
程序中的局部變數存放在stack segment,這些局部變數是在具體方法執行結束之後,系統自動釋放內存資源(而heap segment中的資源需要java垃圾回收機制來處理);
程序中的方法,是內存中的code segment中的,而且是多個對象 共享一個代碼空間區域;
static靜態變數,需要放在內存中的data segment中,

I. Java中,給對象中變數分配空間是在哪一步

方法中的變數在棧區 而實例話在堆區 當你在方法中定義變數的時候就會在棧區分配內存 而你實例化的時候 在堆中分配內存 當你方法運行結束的時候 垃圾回收器自己會處理棧中的變數 至於什麼時候你就不用管了

閱讀全文

與java對象方法分配到哪裡相關的資料

熱點內容
樓房計算方法 瀏覽:476
鐵皮桶漏水用什麼方法 瀏覽:605
眉卡的正確使用方法 瀏覽:481
內毒素檢測有哪些方法 瀏覽:411
初三居家體能訓練方法 瀏覽:678
冷車油門不穩解決方法 瀏覽:528
感冒清水鼻涕解決方法 瀏覽:879
便盒使用方法 瀏覽:520
3減3分之2的計算方法 瀏覽:77
緬因貓成年怎麼養正確方法科普 瀏覽:317
在心理咨詢中如何選擇咨詢方法 瀏覽:441
灰腳趾甲的治療方法 瀏覽:860
有哪些物理降溫的方法有哪些 瀏覽:165
提高電腦性能100種方法 瀏覽:104
開關啟停最佳方法 瀏覽:576
軟體編程常用的計算方法 瀏覽:949
什麼方法呀我告訴你 瀏覽:434
魚缸水黴菌圖片及治療方法 瀏覽:358
傷創治療方法 瀏覽:169
應屆生如何找工作方法 瀏覽:146