2013-10-11 54 views
0

取決於JVM,它是32位/ 64位還是更少?我們在尋址函數時真的需要地址的多種可能性嗎?有多少內存用於Java對象中的函數引用?

當然,我們永遠不會需要那麼多的可能性,因爲類型的數量,以及由此產生的函數數量將永遠不會達到這些數字?

+1

什麼是「函數參考」? – delnan

+0

我只是指引用一個函數的位置的引用。我想大多數人把它稱爲一個函數指針,就像在C/C++中一樣。 – newlogic

+1

Java中沒有這樣的東西(據我所知至少)。在將來的版本中有lambdas和朋友,但是它們是用一個方法作爲常規對象實現的。你能展示一些利用這種函數引用的代碼嗎? – delnan

回答

1

迄今爲止最簡單的實現使用函數的「真實」/完整地址,無論在所討論的體系結構上如何(例如,函數序言的第一條指令的虛擬地址)。所以是的,這樣一個函數指針可能會是一個很大的單詞。這是一件好事!

對於對象引用或對象頭文件而言,大小並不重要,因爲每個方法在整個進程中只有一個這樣的指針,而不管有多少個實例。此外,縮小地址的任何方案意味着您需要額外的操作來指向調用所指向的函數(或者是間接的,或者是一些算術)。這樣做會很糟糕,因爲每次使用虛擬方法(在優化之前,它們都是全部之前,並且還有一些之後)都會被調用。