是否有可能在一個JVMTI代理中同時擁有由JVMTI Allocate/Deallocate和malloc/free管理的記憶體?
我知道我不能用free來釋放由JVMTI Allocate分配的記憶體,也不能用JVMTI Deallocate來釋放由malloc分配的記憶體,
。我的猜測是,這是因為malloc在必要時從作業系統中獲取記憶體,我想JVMTI Allocate也會做類似的事情。由此我得出結論,JVMTI Allocate/Deallocate 和 malloc/free 并不相互干擾。
背景。我有一些使用 malloc/free 的庫,我想在我的 JVMTI 代理中使用它們。
uj5u.com熱心網友回復:
許多復雜的軟體庫使用他們自己的記憶體管理。其優點是--特別是對于影像處理--對記憶體的需求通常是相同大小的。在這種情況下,記憶體并沒有被真正釋放,只是被添加到一個池中,并在下次需要時提供。 自定義記憶體管理還可以減少記憶體外的錯誤,因為行程記憶體可以得到更好的管理。
我在開發影像處理插件時注意到了這一點。我認為這與 jvmti 的設計理念相同。
盡管如此,new、delete或malloc、free的使用是被允許的,并且不是問題。正如你所注意到的,你不能將自定義的分配與常規的洗掉或釋放混合使用。所以,你必須確保malloc之后是free,new之后是delete。此外,任何自定義分配都將使用自定義的free。以此類推......
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/334262.html
標籤:
