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

旅游网站策划方案推广团队

旅游网站策划方案,推广团队,电商个人网站建设,微信登录网页版登录入口实验 相信大家都听过大名鼎鼎的copy on write技术&#xff0c;并且学习过原理。但是可能对于代码中具体的发生场景&#xff0c;脑海中可能没有实体的映射。下面使用1个例子说明copy on write的发生时间。 有这么一个程序&#xff1a; #include <stdio.h> #include <…

实验

相信大家都听过大名鼎鼎的copy on write技术,并且学习过原理。但是可能对于代码中具体的发生场景,脑海中可能没有实体的映射。下面使用1个例子说明copy on write的发生时间。

有这么一个程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>// 打印当前进程的内存占用(常驻集大小)
void print_memory_usage(const char* stage) {FILE* file = fopen("/proc/self/status", "r");if (!file) {perror("fopen");return;}char line[256];while (fgets(line, sizeof(line), file)) {if (strncmp(line, "VmRSS:", 6) == 0) {printf("[%s] Memory Usage (VmRSS): %s", stage, line + 6);break;}}fclose(file);
}int main() {size_t size = 100 * 1024 * 1024; // 分配 100 MBvoid* ptr = malloc(size);if (!ptr) {perror("malloc");return 1;}printf("Step 1: After malloc (before memset)\n");print_memory_usage("After malloc");sleep(3);  // 给用户一点时间观察memset(ptr, 0, size); // 写入触发物理内存分配printf("Step 2: After memset (after touching memory)\n");print_memory_usage("After memset");sleep(3);  // 给用户一点时间观察free(ptr);printf("Step 3: After free\n");print_memory_usage("After free");return 0;
}

编译+运行

编译:

gcc do_copy_on_write.c -o do_copy_on_write

运行:

./do_copy_on_write

各部分说明

1. 分配内存(malloc)

void* ptr = malloc(size);

分配了一块大小为 100MB 的虚拟内存。此时操作系统只分配了虚拟地址空间,并没有实际分配物理内存页(因为还没有使用它)。程序紧接着打印此时的内存使用情况(VmRSS):

print_memory_usage("After malloc");

2.让程序睡眠3秒

  • 程序会 sleep(3) 秒,可以有时间手动观察或记录当前内存(可以用 tophtop 或查看程序输出)。

  • 你会发现此时内存几乎没有明显增长,只有很小的常驻内存(程序自身的开销)。

3. 访问内存触发分配(memset)

memset(ptr, 0, size);
  • 使用 memset 将这 100MB 全部设置为 0,相当于每个内存页都被写入了一次

  • 这会触发操作系统的延迟物理页分配机制,因为每个页第一次被写入,就必须真正分配物理内存。

  • 然后再次调用 print_memory_usage 打印新的 VmRSS,这时你会看到内存暴涨到 100MB 左右

 4. 最后释放内存

整个程序完整的输出为:

./a.out
Step 1: After malloc (before memset)
[After malloc] Memory Usage (VmRSS):         952 kB
Step 2: After memset (after touching memory)
[After memset] Memory Usage (VmRSS):      103912 kB
Step 3: After free
[After free] Memory Usage (VmRSS):          1536 kB

源码分析

TODO

http://www.dtcms.com/wzjs/364316.html

相关文章:

  • 系统推广公司江苏泰州seo网络优化推广
  • 商业网点建设中心网站平台搭建
  • 网站开发费用百度搜图入口
  • 商家网站建设模板百度官网首页官网
  • b2b网站怎么建设宁波网站推广平台效果好
  • 锚文本外链查询网站国内最好用免费建站系统
  • 迅雷资源做下载网站谷歌收录提交入口
  • html网站尺寸排名优化关键词公司
  • 网站icp备案新规苏州网站制作公司
  • 什么平台做网站嘉兴seo外包
  • 优就业seo课程学多久seo网络排名优化
  • 品牌网站建设目标百度电话销售
  • 高端广告公司网站建设上海sem
  • 网站备案 图标企业门户网站
  • 网站增加关键词关键词排名优化技巧
  • wordpress修改固定链接404seodao cn
  • 做网站的公司为什么人少了怎么找平台推广自己的产品
  • 今天全球重大新闻简述影响关键词优化的因素
  • 做网站推广也要营业执照吗百度搜索推广技巧
  • 网站上做网页怎么改图片网站建设有多少公司
  • 政府网站的ipv6建设方案百度推广一级代理商名单
  • 广州市线下教学台州网站优化公司
  • 聊城网站建设方案漳州seo建站
  • 网站主题定位东莞搜索seo网站关键词优化
  • 双重预防机制信息化平台唐山seo
  • 咸宁网站定制app拉新渠道商
  • 房地产网站欣赏seo 百度网盘
  • 广州做企业网站找哪家公司好济南网络优化哪家专业
  • 网站建设推广新闻百度搜索引擎入口
  • 网站是用什么软件做的吗郑州seo技术服务顾问