【发布时间】:2011-05-28 14:45:57
【问题描述】:
不完全确定如何表达标题,但问题是:
我听说程序员会在程序开始时分配一大块连续内存,然后根据需要进行处理。这与每次需要内存时都简单地访问操作系统相反。 我听说这会更快,因为它可以避免不断向操作系统询问连续的内存块的成本。
我相信 JVM 就是这样做的,它维护自己的内存部分,然后从中分配对象。
我的问题是,如何实际实现这一点?
【问题讨论】:
-
“进入操作系统”是什么意思?堆完全在用户模式下实现,每次堆分配都不需要系统调用,除非需要分配更多页面。或者你有什么不同的想法?
-
“我如何实现内存管理器”这个问题很好,但你必须确保你真的需要这个。如果你这样做是为了训练或只是为了好玩——好吧。如果您确定内存分配是程序中的瓶颈,则应首先考虑重新设计程序,以便分配更大的块。只有在你完成之后,你才应该使用自己的内存管理器。
标签: c++ c memory heap-memory allocation