当前位置:  技术问答>linux和unix

linux下多线程编程,每创建一个新的线程后VIRT都会增加,即swap增加,但是销毁线程后如何回收增加的swap?

    来源: 互联网  发布时间:2017-05-23

    本文导语:  第一张图中的TOP中,是在该进程中开了10个线程的效果,可以看出VIRT 为94m 第二张图中的TOP中,是最先开启的10个线程都撤消后,又开辟的10个线程,可以看出VIRT 为153m,可以看出前面的线程撤消后,并没有回收资源...

第一张图中的TOP中,是在该进程中开了10个线程的效果,可以看出VIRT 为94m
linux下多线程编程,每创建一个新的线程后VIRT都会增加,即swap增加,但是销毁线程后如何回收增加的swap?[图片]
第二张图中的TOP中,是最先开启的10个线程都撤消后,又开辟的10个线程,可以看出VIRT 为153m,可以看出前面的线程撤消后,并没有回收资源(代码中是使用  
//kill the idle thread and free info struct
kill(this->thread_info[this->cur_th_num-1].thread_id, SIGKILL);) 关闭线程,
其中线程函数一开始调用了pthread_detach(pthread_self())改为
pthread_detach(pthread_self());//pthread_detach(pthread_self()),将状态改为unjoinable状态,确保资源的释放
linux下多线程编程,每创建一个新的线程后VIRT都会增加,即swap增加,但是销毁线程后如何回收增加的swap?[图片]

哪个大神告诉我,怎么释放进程为前面已经结束了的10线程产生的swap空间呢?我是初学者

|
first of all, make sure your program doesn't have any memory leak,

second, by default, all threads created by pthread_create are joinable, If you create a joinable thread but forget to join it, its resources or private memory are always kept in the process space and never reclaimed. Always join the joinable threads; by not joining them, you risk serious memory leaks.

For joinable threads, the system allocates private storage to store thread termination status. The status is updated after the thread terminates. To retrieve the thread termination status, call pthread_join(pthread_t thread, void** value_ptr).
The system allocates underlying storage for each thread, including stack, thread ID, thread termination status, and so on. This underlying storage will remain in the process space (and not be recycled) until the thread has terminated and has been joined by other threads.

|
你能开10个线程说明你有资源,你有10线程的资源,你干嘛要回收,下次再建10的时候再分配???这不多此一举,我知道linux默认的线程分配是8M,这样的分配256个线程就2个G了,你考虑的是减少线程分配的资源,而不是傻不垃圾的回收内存。
pthread_attr_init(&attr);
 pthread_attr_setstacksize(&attr, stacksize);
pthread_attr_setschedpolicy(&attr, SCHED_RR);
pthread_attr_getschedparam(&attr, ¶m);

    
 
 

您可能感兴趣的文章:

  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • 请问Linux核心支持多线程吗?开发库有线程库吗?线程好用吗?(稳定?)
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 求个linux多线程编程的例子,要有线程池的 通用些更好
  • 请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
  • Linux多线程时一些线程分不到时间片
  • 说说windows线程和linux线程的区别?
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu iis7站长之家
  • linux下,如何在多线程中每个线程设置一个定时器,在线等,急。。。谢谢
  • 在创建linux线程时为什么会多一个线程?
  • linux如何主动将线程放入到线程调度队列中重新排队?
  • 在linux RH73下为什么单进程只能开1021个线程线程.
  • Linux下如何让主线程挂起一个指定的时间段而子线程继续运行?谢谢
  • LINUX下有没有线程概念,和WIN下线程概念有什么不同,谢谢.
  • linux线程编程问题
  • linux线程最大数,奇怪,怎么只有300?而且线程是用完就没了,不是同时300啊!
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  • linux线程与进程的问题
  • linux 下子线程不能执行的问题?
  • linux多线程编程的问题
  • linux多线程编程
  • 在linux中架设好FTP服务后,增加了用户却无法用新增加的用户访问FTP,纳闷呀..
  • 我linux 上 的 C程序为什么虚拟内存(VSZ) 不断增加 一天之后增加好几倍?
  • 如何增加分给Linux的磁盘空间
  • 如何增加VMware下Linux的硬盘容量!
  • 如何增加linux虚拟机文件系统空间
  • 如何给linux重新分区,给其增加1G??
  • 关于增加LINUX系统调用的问题
  • linux 中增加一个ftp用户名和密码的问题,在线等
  • linux 增加容量的问题
  • linux内核编程,增加系统调用
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux 定时器销毁
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在没有linux的盘,只有DOS启动盘)
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • 如何让win2000和linux共存。我装好WIN2000,再装LINUX7.0,但LILO只能找到LINUX,不能引导WIN2000
  • linux c下利用srand和rand函数生成随机字符串
  • 在windows中的VMware装了个linux,主板有两个串口,能做windows和linux的串口通信测试么,怎么测试这两个串口在linux是有效
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 我们网站的服务器从windows2000迁往linux,ASP程序继续使用,可是我连LINUX的皮毛都不了解,大家告诉我LINUX下怎么建网站??
  • Docker官方镜像将会使用Alpine Linux替换Ubuntu
  • 中文Linux与西文Linus分别哪一个版是权威?I认为是:中科软的白旗Linux与西文的绿帽子Linux!大家的看法呢?
  • Linux下chmod命令详细介绍及用法举例
  • 我重装了winme,却进不了Linux了,而我现在又没有Linux光盘,也没有Linux启动盘,还有没有办法?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3