由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 突然发现现在很反感malloc了
相关主题
请问释放容器内存的方法"brk()" 和 mmap() 有什么区别? (转载)
寻找一个allocator 做一个指定内存空间内的 alloc/freec++的问题
奇怪的问题:关于一个简单的malloc()小程序 (转载)请问C++ exception后如何清理function stack上的内存资源?
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)C++程序如何处理内存分块?
什么是OS Memory management and heap structure?array allocation in c
VC++ 中的 memory leak problem菜鸟请教C问题
[合集] 谁给个stack-based allocation 的C++的例子?effective C++里的memory pool 一问:
这个怎么allocate memory?why do we still use dynamic allocation?
相关话题的讨论汇总
话题: 内存话题: malloc话题: memory话题: 缓存话题: 反感
进入Programming版参与讨论
1 (共1页)
w***g
发帖数: 5958
1
写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。
g*********s
发帖数: 1782
2
so it seems u finish a customized mem pool...

【在 w***g 的大作中提到】
: 写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
: 都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
: 配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
: 多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
: 缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。

F****n
发帖数: 3271
3
Not a good practice.
1. No memory increase only because you set memory usage to the maximum from
the start, which is kind of dumb.
2. If memory usage is high, you can get StackOverflow problem, which is
difficult to handle.

【在 w***g 的大作中提到】
: 写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
: 都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
: 配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
: 多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
: 缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。

l******e
发帖数: 12192
4
re-invent wheel.....

【在 w***g 的大作中提到】
: 写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
: 都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
: 配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
: 多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
: 缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。

s****n
发帖数: 786
5
你反感malloc什么?碎片?颗粒度?效率?
今天的帖子搞不好都是玩笑

【在 w***g 的大作中提到】
: 写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
: 都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
: 配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
: 多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
: 缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。

k****n
发帖数: 1334
6
水平又提高了lol。。

【在 w***g 的大作中提到】
: 写了一阵C++,又回过头来写C,发现现在特别反感malloc. 最近写了一个系统,几乎全
: 都用静态分配的变量,然后把数组上限写在一个头文件里便于修改。剩下所有的缓存分
: 配在程序启动时用一个mmap搞定,然后自己分成相同大小的小块自己管理。这样系统用
: 多少内存在程序启动的时候就定了,运行过程中一直都不会增加,最多就是预先分配的
: 缓存不够时系统会变慢。这个系统写完我觉得非常爽,感觉自己水平又提高了。

w***g
发帖数: 5958
7
我是希尔瑞斯的. 对于out-of-core算法而言, 内存永远是不够的. 这就是为什么必须
一开始就分配所有可用的内存了. 如果你看过数据库方面的论文, 就知道性能评测很重
要的一点就就是内存--性能曲线. 比如你虽然有16GB内存, 但是你想看只用2GB内存时的
系统性能, 用malloc貌似很难限制程序只用2GB内存. 但是如果自己分配内存, 可以实现
一个带阻塞功能的内存分配机制.内存不够了流水线中的某一步就会暂时挂起等待空闲内
存, 或者开始释放cache页面. 还有一个好处就是可以尽量避免操作系统的文件系统缓存
和swapping对算法性能的影响. 因为程序最多可能用到的内存在程序启动的时候就定了
(当然不能写递归算法啦), 可以用mlock把所有分配的地址锁定在内存中.
所有正经的数据库服务器都会自己实现内存管理和磁盘空间管理, 这肯定是有它的道理
的.

【在 s****n 的大作中提到】
: 你反感malloc什么?碎片?颗粒度?效率?
: 今天的帖子搞不好都是玩笑

g*********s
发帖数: 1782
8
i agree that customized mem pool with domain knowledge is possibly better
than standard one.

时的
实现
闲内
缓存

【在 w***g 的大作中提到】
: 我是希尔瑞斯的. 对于out-of-core算法而言, 内存永远是不够的. 这就是为什么必须
: 一开始就分配所有可用的内存了. 如果你看过数据库方面的论文, 就知道性能评测很重
: 要的一点就就是内存--性能曲线. 比如你虽然有16GB内存, 但是你想看只用2GB内存时的
: 系统性能, 用malloc貌似很难限制程序只用2GB内存. 但是如果自己分配内存, 可以实现
: 一个带阻塞功能的内存分配机制.内存不够了流水线中的某一步就会暂时挂起等待空闲内
: 存, 或者开始释放cache页面. 还有一个好处就是可以尽量避免操作系统的文件系统缓存
: 和swapping对算法性能的影响. 因为程序最多可能用到的内存在程序启动的时候就定了
: (当然不能写递归算法啦), 可以用mlock把所有分配的地址锁定在内存中.
: 所有正经的数据库服务器都会自己实现内存管理和磁盘空间管理, 这肯定是有它的道理
: 的.

o*******0
发帖数: 699
9
pre-allocation is good practice. It's good for system stability and
performance.
It has nothing to do with Stack overflow. He is pre-allocating on heap.

from

【在 F****n 的大作中提到】
: Not a good practice.
: 1. No memory increase only because you set memory usage to the maximum from
: the start, which is kind of dumb.
: 2. If memory usage is high, you can get StackOverflow problem, which is
: difficult to handle.

o*******0
发帖数: 699
10
Especially on servers with a lot of memory now days.

【在 o*******0 的大作中提到】
: pre-allocation is good practice. It's good for system stability and
: performance.
: It has nothing to do with Stack overflow. He is pre-allocating on heap.
:
: from

R***Z
发帖数: 1167
11
Embedded system里有时会需要这样做。不少情况下你device的specification是固定的
,所以预先就知道需要多少内存,与其让malloc到时候分配内存,还不如先allocate这
么多内存然后分配好。要知道有些embedded OS的内存管理可不像desktop电脑那么聪明
,碎片真的会是个问题

from

【在 F****n 的大作中提到】
: Not a good practice.
: 1. No memory increase only because you set memory usage to the maximum from
: the start, which is kind of dumb.
: 2. If memory usage is high, you can get StackOverflow problem, which is
: difficult to handle.

1 (共1页)
进入Programming版参与讨论
相关主题
why do we still use dynamic allocation?什么是OS Memory management and heap structure?
怎样高效管理内存?VC++ 中的 memory leak problem
有谁对glibc的allocator有研究?[合集] 谁给个stack-based allocation 的C++的例子?
怎样在内存中打洞这个怎么allocate memory?
请问释放容器内存的方法"brk()" 和 mmap() 有什么区别? (转载)
寻找一个allocator 做一个指定内存空间内的 alloc/freec++的问题
奇怪的问题:关于一个简单的malloc()小程序 (转载)请问C++ exception后如何清理function stack上的内存资源?
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)C++程序如何处理内存分块?
相关话题的讨论汇总
话题: 内存话题: malloc话题: memory话题: 缓存话题: 反感