我試圖將Java轉換爲中間語言,並且正在研究如何使用中間語言。我們如何知道設置堆有多大?
我有原來的Java代碼:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/Factorial.java
而且我有中間代碼表示(蒸汽):http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/Factorial.vapor
這裏是另一套:在Java中:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/BubbleSort.java
汽: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
。
謝謝!
大多數人的對象大小隻是做一個快速的,合理的猜測,如果JVM用完堆,增加更多。然後,如果它繼續耗盡大堆,尋找內存泄漏等 – Bohemian
雖然基於什麼?我試圖自動化這個過程,並且我需要一些具體的猜測依據 – pauliwago
@Bohemian - 他似乎在詢問單個對象的大小,而不是所需的堆總數。 –