Re: [問題] 問一個 記憶體 和 GC 的問題

看板java作者 (雪.狼.湖)時間19年前 (2006/01/30 02:14), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/5 (看更多)
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《jackyhuang (雪.狼.湖)》之銘言: : fooMethod2(){ : FOO foo = new FOO(); : } : 當然,如果每次 foo 都是用相同位置,那就沒差 : 不過,那實在不太合乎道理 : 有錯還請指正 你這樣的做法,還是將FOO instance建立在heap space 主要的問題就出在你和我對"local variable"這個字的看法有差異 嚴格來說,foo是local variable, 而foo指向某一個FOO instance foo裡所存的值是存在stack中,而object instance是在heap中 但你這樣的做法和你之前說用local會花更多記憶體也沒道理 因為不管你使用local variable或instance member來hold產生的物件 都是產生在heap space,根本不會有什麼差異。(透過new operator都是在heap) 頂多是你用instance member可以hold住你最後一次loop產生的instance罷了 tkcn的回文讓我認為,他指的情況是將prmitive type傳入, 以傳入long來說也只要64bit,所以我才會說call by value佔不了多少memory 如果你傳入的是reference type,那也只不過是把reference "value" copy一份傳過去 所以怎麼說都不會通 (而且return就釋放了) 我想如果你有寫或讀過C++的話, 就會知道其實是有Local Object(Automatic Object)這種東西 所以我們討論起來才會有點雞同鴨講,C++的物件是可以產生在stack中的 說得有點雜,我只是想表達一點,"使用區域變數反而會增加記憶體用量"這句話 我覺得不太正確~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.121.209.88
文章代碼(AID): #13tGOBii (java)
文章代碼(AID): #13tGOBii (java)