C++ pmr多态内存资源选择支持按需释放
C++ pmr polymorphic memory resources choice supports to release as needed
我的程序是守护进程,运行了很长时间。只是有些时候会需要大量的内存资源。
我想通过增加内存局部性来提高我的程序性能。
PMR 似乎是一个很好的工具。
但是,标准提供的内存资源似乎没有return在当前有大量内存未使用时上游的内存。
(即 synchronized_pool_resource、unsynchronized_pool_resource、monotonic_buffer_resource)
我希望我的程序在负载不高时可以使用较少的内存。 (有点像在需要时调用 malloc_trim
)
是否有一种内存资源只会缓存少量当前未使用的内存,return 其余的上游。
可以写一个内存资源来为所欲为。但是,由于您所描述的(返回未使用的内存)是默认分配器所做的(并且是使用它的主要原因之一),因此添加更多执行此操作的标准库内存资源没有多大意义.
大多数定义的内存资源都是关于不返回未使用的内存,因为返回和重新分配内存是昂贵的。它们提供了不同的策略来保持内存的可访问性,以便以后的分配调用尽可能快。也就是说,他们的重点是避免从堆中分配内存的成本。
所以您必须编写具有您正在寻找的功能的资源。
我的程序是守护进程,运行了很长时间。只是有些时候会需要大量的内存资源。
我想通过增加内存局部性来提高我的程序性能。 PMR 似乎是一个很好的工具。
但是,标准提供的内存资源似乎没有return在当前有大量内存未使用时上游的内存。 (即 synchronized_pool_resource、unsynchronized_pool_resource、monotonic_buffer_resource)
我希望我的程序在负载不高时可以使用较少的内存。 (有点像在需要时调用 malloc_trim
)
是否有一种内存资源只会缓存少量当前未使用的内存,return 其余的上游。
可以写一个内存资源来为所欲为。但是,由于您所描述的(返回未使用的内存)是默认分配器所做的(并且是使用它的主要原因之一),因此添加更多执行此操作的标准库内存资源没有多大意义.
大多数定义的内存资源都是关于不返回未使用的内存,因为返回和重新分配内存是昂贵的。它们提供了不同的策略来保持内存的可访问性,以便以后的分配调用尽可能快。也就是说,他们的重点是避免从堆中分配内存的成本。
所以您必须编写具有您正在寻找的功能的资源。