linux-Linux c语言程序内存占用大,需要注意那些方面来削减内存占用

问题描述

Linux c语言程序内存占用大,需要注意那些方面来削减内存占用

搜索了相关资料都是关于堆栈啊这些资料,感觉无从下手,请高手解答

解决方案

首先是考虑你的思路,看能否精简你的思路,使得代码更高效更简单;
其次是注意释放内存,不再用的及时释放,不多占资源;
再次是检查你的全局变量,少用全局变量可以减少运行时占用的内存;
最后是注意不要大文件一次性加载进内存,简单粗暴的效率低下。

解决方案二:

malloc要及时free释放内存
其实就是如果你需要反复申请使用内存,可以考虑利用内存池的概念
还有就是你的程序是否要加载大文件到内存中,如果有,那么就不要一次性加载整个文件,而是分块读取

解决方案三:

如果没有内存泄露的问题,则需要从代码上考虑,减小全局性、大内存的使用,尽量使用局部变量、与动态分析的内存。
在做参数传递时,参数尽量少 & 小。因为做函数调用时,会存在保存环境的动作,要使用堆栈。
如果程序的功能要求,必须使用大内存才能实现,程序占用内存大就是正常的。

另外,你所谓的应用占用内存大,到底是大到什么程序呢?

时间: 2024-12-21 01:41:49

linux-Linux c语言程序内存占用大,需要注意那些方面来削减内存占用的相关文章

使用linux写c语言程序,用红帽好还是ubuntu?

问题描述 使用linux写c语言程序,用红帽好还是ubuntu? 如题,发现用ubuntu的人太多太多了,几乎没有几个人用红帽,而我在用. 那么问题是,这两个系统有什么大的区别么,如果仅用来写c语言,哪个更好呢 解决方案 在Linux&ubuntu上编译C语言程序在python中使用C语言 [Linux Ubuntu][Linux]在Ubuntu12.04中写C语言与Helloworld 解决方案二: ubuntu吧,红帽很老了,现在改名fedaro的,而ubuntu是免费的,随便用,网络资源也

《Linux C编程从入门到精通》一第2章 在Linux中编写C语言代码2.1 Linux中C语言程序开发流程和工具介绍

第2章 在Linux中编写C语言代码 Linux C编程从入门到精通 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Lin

【紧急问题求大神解决】 asp.net 读取数据库内容造成服务器内存占用大

问题描述 我想从数据库中读取文章内容,生成静态页面,但是数据库文章量太大,怎么防止造成服务器一次性加载所以内容造成内存压力?同时也可以提高生成静态页面的速度?我查相关的数据说datareader效率比较高,用这个读取数据会不会太慢了?怎么实现求高手指教~ 解决方案 解决方案二:你一次性加载所有内容(数据量很大),数据库怎么可能没有压力呢?!你要做的事情是优化查询,使得加载速度变化,而不是考虑怎么让数据库没压力

Linux下c语言延迟程序

问题描述 Linux下c语言延迟程序 我用的Ubuntu14.04,想写了一个延迟程序,具体是延迟一秒输出一个 '.' : for(i =0;i<10;i++) {sleep(1);printf(".");} 但是效果是先延迟10秒再输出10个'.'要的效果是每一秒输出一个'.' 解决方案 Linux下C语言程序开发环境Linux下C语言程序开发环境Linux下C语言程序的编译过程 解决方案二: http://blog.chinaunix.net/uid-722885-id-12

《Linux C编程从入门到精通》——第 2 章 在Linux中编写C语言代码 2.1Linux中C语言程序开发流程和工具介绍

第 2 章 在Linux中编写C语言代码 Linux作为一个操作系统,一项重要的功能就是要支持用户编程.传统的UNIX下的程序开发语言是C语言,C语言是一种平台适应性强.易于移植的语言.Linux是用C语言写成的.反过来,Linux又为C语言提供了很好的支持,C语言编译工具gcc.调试工具gdb属于最早开发出来的一批自由软件.因此Linux与C语言形成了完美的结合,为用户提供了一个强大的编程环境,本章将介绍在Linux中编写C语言程序的流程和具体方法. 2.1 Linux中C语言程序开发流程和工

linux下c语言大内存分配

问题描述 linux下c语言大内存分配 远程登录工作站(64G)c语言分配12G内存失败 代码如下 #include<stdio.h> #include<string.h> #include<malloc.h> int main() { char *x=NULL; x=(char *)calloc(3001*3001*1200,sizeof(char)); if(x==NULL) printf("failed"); else printf("

c语言问题-Linux下的C语言程序问题无限循环

问题描述 Linux下的C语言程序问题无限循环 这个程序我在Linux里用gcc编译,然后无限循环,我用ctrl+c但是只能停止循环,却不能退出运行,这是一个问题,还有一个就是为什么它会无限循环?我把for里面中间一个x!=9.9改成x<=9.9还是无限循环,为什么? 解决方案 杂记之C语言之无限循环 解决方案二: 改成<=9.9就不会出现这个情况的, 解决方案三: 亲测,改为<=9.9不是无限循环,用!=是无限循环的原因很简单,float,double的!=不能这么判断,比如你判断 a

请问测试linux下某个jsp站点cpu和内存占用率代码怎么写?

问题描述 请问测试linux下某个jsp站点cpu和内存占用率代码怎么写?谢谢! 解决方案 解决方案二:up解决方案三:Up解决方案四:Up解决方案五:http://www.diybl.com/course/4_webprogram/jsp/jsp_js/20090212/155296_3.html看看这个~·解决方案六:思路就是调用linux下的命令然后分析输出的结果.解决方案七:继续问解决方案八:Runtimerun=Runtime.getRuntime();Processpro=run.e

《C语言开发从入门到精通》一2.3 在Linux下开发C程序

2.3 在Linux下开发C程序 知识点讲解:光盘:视频\PPT讲解(知识点)\第2章\在Linux下开发C程序.mp4 在平常工作中,我们都熟识了Windows系统,程序开发也习惯了在Windows环境下开发程序这一工作模式.但是,在特殊应用领域,例如单片机应用和嵌入式开发,就需要在Linux环境下开发C程序.Linux是一种计算机操作系统,是一套免费使用和自由传播的类UNIX操作系统,它主要用于基于Intel x86系列CPU的计算机上.这个系统是由世界各地成千上万的程序员设计和实现的.其目