记录第一个C++ 实战项目
问题1:用户进程通过malloc申请内存空间需要转到操作系统内核空间进而读取内存,是不是需要系统调用这个操作?如果没有内存池,那么每次都需要这样导致效率很低
回答:因为用户进程一般都是在操作系统用户态,如果没有内存池,会导致不断地进行系统调用,在内核态获得内存,从而导致大量切换开销,效率低下。并且也会存在内存碎片的问题。
内存池很好地解决了这两个问题:通过一次性申请大块内存空间到内存池,之后需要内存就从内存池获取,而不是频繁向内存获取;
微信扫一扫
记录第一个C++ 实战项目
问题1:用户进程通过malloc申请内存空间需要转到操作系统内核空间进而读取内存,是不是需要系统调用这个操作?如果没有内存池,那么每次都需要这样导致效率很低
回答:因为用户进程一般都是在操作系统用户态,如果没有内存池,会导致不断地进行系统调用,在内核态获得内存,从而导致大量切换开销,效率低下。并且也会存在内存碎片的问题。
内存池很好地解决了这两个问题:通过一次性申请大块内存空间到内存池,之后需要内存就从内存池获取,而不是频繁向内存获取;
相关推荐