[英]How do we know how big to set the Heap?
我正在嘗試將Java轉換為中間語言,並且正在弄清楚中間語言的工作方式。
我有原始的Java代碼: http : //cs.ucla.edu/classes/spring11/cs132/cs132/mj/Factorial.java
而且我有中級代碼表示形式(VAPOR): http : //cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/Factorial.vapor
這是另一組:在Java中: http : //cs.ucla.edu/classes/spring11/cs132/cs132/mj/BubbleSort.java
在VAPOR中: http : //cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/BubbleSort.vapor
我的問題是,所有的VAPOR代碼都具有t.0 = HeapAllocZ(x)
(其中x
是int
)。 我想知道轉換器如何確定堆大小需要為x
。 在Factorial.vapor
,將其設置為4
。 在BubbleSort.vapor
,將其設置為12
。
謝謝!
看起來HeapAlloc
是基於要創建的結構的大小(假定4
和12
是字節值)。 我認為查看數據結構使用的變量,並計算這些變量求和的字節數將為您分配數量。
如果您注意到,Java版本的階乘沒有數據成員。 Java版本的BubbleSort具有兩個4字節的整數(總共8個字節)。
假定對象的“開銷”是4個字節(指向類對象的指針的大小)。
因此,階乘的對象大小為4,而BubbleSort的對象大小為12。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.