2012-10-18 85 views

回答

0

我有一個可視化堆的工具(http://bobah.net/d4d/tools/cpp-heapmap),但它使用{op; address; size}三元組列表,而不是原始堆轉儲。您可以用它來直觀地估計堆的壞點。在某些情況下,這就夠了。它的malloc攔截器顯然不適合Java應用程序,但UI並不關心數字來自哪裏,並且會顯示來自任何來源的數據。

但讓我們假設我們能夠從轉儲中創建一個堆映射(我確信有人會在這裏回答這個問題)。問題的主要部分是計算碎片曲線F(s),s - 目標分配大小。 F(s) - (total_free_space/s)與大小爲s的塊的數量,這些塊可以考慮特定的堆佈局而實際分配。

一旦建立了F(s),就可以將其集成到從1到S(總堆大小)的區間中,以使單個數字代表堆碎片或使用效率。