Solaris上内存释放问题
在solaris 10 x86_64上malloc内存,操作完free,程序运行过程中,内存一直在涨(通过prstat -a命令查看),同样得程序在windows上运行没有不存在这个问题,所以可以排除内存泄漏得可能。通过查看solaris得内存释放和分配算法,得知当程序调用free时,系统并不直接释放内存页,目的是为了下次程序可能再次访问这些内存页,从而提高系统性能,当系统缓存到一定数量的时候,系统会自动根据算法把这些不用得页真正的释放掉。
问题:在不使用其它版本malloc实现得前提下,有没有编译器选项或者其它方法能够使得生成得程序不使用这种机制,即当程序调用free时,系统立即释放内存页?
[解决办法]
Solaris会尽最大可能的使用内存,只有在系统内存紧缺的情况下才将内存真正释放掉,这样会提高系统的性能。这些对于用户进程来说是不可见的。
我想知道你为什么要避开这个机制呢?