内存泄漏、虚拟内存、物理内存的联系

虚拟内存是您的程序处理的内容。它由所有由malloc,new等人返回的地址组成。每个进程都有自己的虚拟地址空间。虚拟地址的使用在理论上受到程序地址大小的限制:32位程序具有4GB的地址空间; 64位程序有更多。实际上,一个进程可以分配的虚拟内存量少于这些限制。

物理内存是芯片焊接到您的主板,或安装在您的内存插槽。在任何给定时间使用的物理内存量都限制在计算机中的物理内存量。

  • 虚拟内存子系统将您的程序使用的虚拟地址映射到CPU发送到RAM芯片的物理地址。
  • 在任何特定时刻,大部分分配的虚拟地址都是未映射的;因此物理内存使用低于虚拟内存使用。
  • 如果访问已分配但未映射的虚拟地址,操作系统会无形地分配物理内存并将其映射。
  • 如果不访问虚拟地址,操作系统可能会取消映射物理内存。

应用程序一般使用malloc,calloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序未调用对应的free或delete释放该内存块,从而导致内存泄漏。
所以内存泄漏会导致进程的虚拟内存使用不断增加,而由于申请后未被访问使用,所以并不会映射到物理内存占用电脑内存资源(这样系统可以防止某个恶心进程占着茅坑不拉屎…)。
当是如果程序运行的事件够长,每次泄漏不断累积,长期下去虚拟内存空间也会被全部用完,此时系统会使用系统的硬盘存储充当虚拟内存的扩展,如使用C盘空间(操作据编译器不同而不同),所以这样漏下去还是会导致电脑系统卡顿甚至蓝屏。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用 Jupyter Notebook 时,虚拟内存的设置与操作系统的虚拟内存设置相似。Jupyter Notebook 是一个基于浏览器的交互式编程环境,因此它运行在操作系统提供的虚拟内存环境中。 如果你在使用 Jupyter Notebook 时遇到了虚拟内存不足的问题,可以尝试以下方法来解决: 1. 增加物理内存:如果你的计算机有空余的内存插槽,可以考虑添加更多的内存条。增加物理内存可以提供更多的可用内存空间,减少对虚拟内存的依赖。 2. 优化代码和内存使用:检查你的代码是否存在内存泄漏或不必要的大内存占用。合理地使用变量和数据结构,并在不需要时及时释放内存。 3. 减少数据加载量:如果你处理大量数据时遇到虚拟内存问题,可以考虑减少数据加载量或者分批加载数据。只加载需要处理的部分数据,而不是一次性加载全部数据。 4. 适当调整 Jupyter Notebook 的资源限制:Jupyter Notebook 可以通过配置文件或命令行参数来调整其资源限制。例如,你可以设置内核的内存限制或输出的最大行数/列数来减少内存占用。 请注意,Jupyter Notebook 运行在浏览器中,因此其虚拟内存受制于操作系统的虚拟内存设置。如果你在 Jupyter Notebook 中使用的是大量资源密集型的任务,可能需要更多的物理内存或者优化代码以减少内存使用。 同时,也建议定期重启 Jupyter Notebook,以释放被占用的内存资源,并确保系统的稳定性和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值