sleep唤起内存泄漏
sleep引起内存泄漏?
在线程函数fun调用的fun1函数中加上sleep,就会有内存泄漏,大概40几秒多出8k。把sleep注释了就不会有这个问题。
为什么?
int main()
{
pthread_t td;
pthread_create(&td,NULL,fun,this);
pthread_detach(td);
return ;
}
void* fun()
{
char c;
while(1)
{
while(read(fd,&c,1)) //从设备fd中读取字节,fd已经打开
fun1();
}
return NULL;
}
bool fun1()
{
......
sleep(3); // 只要注释这句就没有内存问题
return true;
}
------解决方案--------------------
sleep函数绝对不会导致内存泄漏。
我的多线程程序,在需要一直运行的线程的循环中,都会加上sleep(1),否则cpu利用率会100%的。
------解决方案--------------------
sleep使用,在多线程的时候注意进程间锁,互斥的问题,正常情况不会带来内存的泄漏。
以前倒是使用出过问题,那就是在两个锁之间使用了sleep。你最简化你的代码,看看是否有问题。
------解决方案--------------------
你看看是不是无限增加呢?或者是你只是把文件内容读取到了内存中导致了内存增加呢?排除法啊大哥,一点点的排除才能找到问题所在、
在线程函数fun调用的fun1函数中加上sleep,就会有内存泄漏,大概40几秒多出8k。把sleep注释了就不会有这个问题。
为什么?
int main()
{
pthread_t td;
pthread_create(&td,NULL,fun,this);
pthread_detach(td);
return ;
}
void* fun()
{
char c;
while(1)
{
while(read(fd,&c,1)) //从设备fd中读取字节,fd已经打开
fun1();
}
return NULL;
}
bool fun1()
{
......
sleep(3); // 只要注释这句就没有内存问题
return true;
}
------解决方案--------------------
sleep函数绝对不会导致内存泄漏。
我的多线程程序,在需要一直运行的线程的循环中,都会加上sleep(1),否则cpu利用率会100%的。
------解决方案--------------------
sleep使用,在多线程的时候注意进程间锁,互斥的问题,正常情况不会带来内存的泄漏。
以前倒是使用出过问题,那就是在两个锁之间使用了sleep。你最简化你的代码,看看是否有问题。
------解决方案--------------------
sleep使用,在多线程的时候注意进程间锁,互斥的问题,正常情况不会带来内存的泄漏。
以前倒是使用出过问题,那就是在两个锁之间使用了sleep。你最简化你的代码,看看是否有问题。
最简化了,还是这个问题。
fd设备是源源不断有数据出来的,会不会是sleep那3秒期间,缓冲区多了很多未读数据,导致内存增加?
你看看是不是无限增加呢?或者是你只是把文件内容读取到了内存中导致了内存增加呢?排除法啊大哥,一点点的排除才能找到问题所在、