当前位置: 首页 > news >正文

thinkphp 网站源码vi设计公司网站

thinkphp 网站源码,vi设计公司网站,电子商务怎么样,媒体资源内存占用是我们开发的时候需要重点关注的一个问题#xff0c;我们可以人工根据代码推理出一个消耗内存较大的函数#xff0c;也可以推理出大概会消耗多少内存#xff0c;但是这种方法不仅麻烦#xff0c;而且得到的只是推理的数据#xff0c;而不是实际的数据。 我们可以…内存占用是我们开发的时候需要重点关注的一个问题我们可以人工根据代码推理出一个消耗内存较大的函数也可以推理出大概会消耗多少内存但是这种方法不仅麻烦而且得到的只是推理的数据而不是实际的数据。 我们可以使用工具来分析实际的内存消耗情况分析较严重的内存消耗点然后想办法修改。这篇文章我们就来聊一下在Linux系统中怎么使用valgrind分析C程序内存资源使用情况。当然在分析内存使用情况之前建议先解决内存泄漏问题我们之前也介绍过怎么分析内存泄漏。 valgrind是一个工具组valgrind里的massif工具可以用来分析内存使用情况帮助识别程序中内存占用高的部分。 我们来看一个示例程序 #include iostream #include thread #include chrono #include string.hvoid FuncA() {void *p malloc(1024);memset(p, a, 1024); // 填充一些数据防止内存处于伪分配的状态free(p); }void FuncB() {void *p malloc(1024 * 3);memset(p, a, 1024 * 3);free(p); }void FuncC() {void *p malloc(1024 * 6);memset(p, a, 1024 * 6);free(p); }int main() {FuncA();std::this_thread::sleep_for(std::chrono::milliseconds(10));FuncB();std::this_thread::sleep_for(std::chrono::milliseconds(10));FuncC();std::this_thread::sleep_for(std::chrono::milliseconds(10));return 0; }这个程序很简单所以我们完全可以直接分析出来实际内存使用情况但是这里我们来看一下怎么用工具分析。 先执行命令g -g ./main.cpp -o main将前面这段代码构建成可执行程序。 安装valgrind可以执行命令apt install valgrind直接安装然后执行命令valgrind --version查看是否已经正常安装。 valgrind安装完成之后我们就可以执行命令valgrind --toolmassif --time-unitms ./main启动分析了解释一下这条命令中的参数 --toolmassif表示使用massif工具。--time-unitms表示按照时间片抓取快照还可以指定按照程序执行的指令数或者内存的变化量抓取快照。 这条命令执行完成后会生成一个分析结果文件 这个分析结果文件的文件名默认就是上图中的格式后缀是进程号。 然后我们分析一下这个分析结果文件valgrind有个自带的工具叫ms_print可以用来打开这种分析结果文件比如执行命令ms_print ./massif.out.3679就可以查看了。 但是这个可视化效果不好我们可以使用另外一个工具massif-visualizer来分析这个工具可以以火焰图的形式将结果文件展示出来。 可以执行命令apt install massif-visualizer安装massif-visualizer工具然后执行命令massif-visualizer --version确认是否已经正常安装。 安装完成之后我们就可以使用massif-visualizer分析了比如执行命令massif-visualizer ./main.massif.out打开结果文件这个工具的具体用法可以自己研究下 上面这种方法只能在程序执行完之后才能获取到分析结果文件我们来看一下怎么在程序执行的过程中获取分析结果文件需要使用gdb配合。 修改一下代码 #include iostream #include thread #include chrono #include string.hvoid FuncA() {void *p malloc(1024);memset(p, a, 1024); // 填充一些数据防止内存处于伪分配的状态free(p); }void FuncB() {void *p malloc(1024 * 3);memset(p, a, 1024 * 3);free(p); }void FuncC() {void *p malloc(1024 * 6);memset(p, a, 1024 * 6);free(p); }int main() {FuncA();std::this_thread::sleep_for(std::chrono::milliseconds(10));FuncB();std::this_thread::sleep_for(std::chrono::milliseconds(10));FuncC();std::this_thread::sleep_for(std::chrono::milliseconds(10));getchar();return 0; }可以看到只是多了一个getchar()用这种方式来让程序不要直接退出。执行命令g -g ./main.cpp -o main构建一下。 执行命令valgrind --vgdbyes --toolmassif --time-unitms --massif-out-filemain.massif.out ./main启动分析解释一下这条命令中的参数 –vgdbyes表示开启gdbserver。–massif-out-filemain.massif.out表示指定生成的分析结果文件名为main.massif.out。 可以看到程序正在执行前面那个数字是进程号等下需要用到。 然后我们另外开启一个命令窗口执行命令gdb ./main启动gdb调试。 然后在gdb中启动远程调试比如执行命令target remote | /usr/bin/vgdb --pid6004pid就是前面启动分析时的那个。 然后在gdb中执行命令monitor all_snapshot main.massif.vgdb.out这条命令可以驱动valgrind使用当前所有快照生成一个文件名为main.massif.vgdb.out的分析结果文件在程序执行完之后也会生成一个分析结果文件。 需要注意的是在gdb中远程调试时进程会阻塞可以在gdb中使用命令c让程序继续执行就是gdb正常调试时的指令。 如果这篇文章对你有帮助别忘了关注我啊可能我还会写出更多对你有帮助的文章
http://www.dnsts.com.cn/news/249098.html

相关文章:

  • 手机版网站模板 免费网站建设图片qq群
  • 济南建设监理协会网站动漫制作专业实训
  • 长沙市网站设计公司wordpress乱码
  • 网站规划结构阿里云4核8g云服务器多少钱
  • 做虚拟币网站需要什么手续网站推广策划案哪里有
  • 邢台建网站找谁为什么打开谷歌浏览器是2345网址导航
  • 贷款织梦网站模版最近国际重大新闻事件2022
  • 旅游网站建设的功能定位做网站的外包公司有哪些
  • 杭州网站建设的公司seo网站描述
  • 网站建设预算织梦wap网站模板
  • 庆阳做网站公司土木工程招聘网最新招聘信息
  • 网站主机有什么用厦门专门建设网站的公司
  • 网站建设.pdf百度云上海电子商城网站
  • 怎样建立俄罗斯网站网络设计总结
  • 在线教育平台网站建设广告公司设计
  • 网站代码 字体网站制作老了
  • 扬州建设工程信息网站怎么做兼职网站
  • 沈阳模板建站公司有哪些申请渠道门户网站是什么意思
  • 百度验证网站所有权手机就可以直接做设计的网站
  • 怎么优化自己网站怎么给网站做关键词搜索
  • 网站刷流量有用吗建设局全称
  • 上海千途建站百度seo快速提升排名
  • wordpress 外贸网站建设电子邮箱网站注册
  • 小公司怎样自己建网站wordpress 时间轴 主题
  • 专业做网站的网站wordpress添加文章页不显示图片
  • 网站报价功能清单做网站网页挣钱不
  • 如何选择扬中网站建设网页设计代码源
  • php怎么建立网站wordpress4.7.5下载
  • 万网如何上传网站学做网站可以赚钱吗
  • 做网站的一般要多钱做超市商品海报免费海报模版网站