博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows内存管理
阅读量:5915 次
发布时间:2019-06-19

本文共 466 字,大约阅读时间需要 1 分钟。

虚拟地址空间

物理存储器: 物理内存 + 页文件

进程拥有堆,堆默认是1M,但是可以根据需要,通过堆管理器调用VirtualAlloc来分配。

线程拥有栈,栈默认是1M,从高到第地分配。

new 和 malloc是在堆空间中分配空间,但是他们会有一个加锁的过程,保证堆只被一个对象所拥有。

在windows环境下,其分配粒度大小均为64k。那么,我们可以把整个虚拟内存空间看作是由一个个以64k为边界的64k大小的内存页面组成。如果用VirtualAlloc来申请内存,不管申请多大,内存管理器都会把整张整张的页面给你,即使你只申请一个字节的内存,内存管理器也会把一个64k大小的未用的页面返回给你,这样势必会造成内存资源的浪费。而调用new来申请堆中的空间,就不会出现这种情况。堆就是一个内存池,微软已经对堆管理器分配堆内存的策略做了高度的优化。当我们调用new或malloc时,堆管理器会从堆中找出一块恰当的内存返回给我们。

 

转载于:https://www.cnblogs.com/wang-can/p/3355856.html

你可能感兴趣的文章
JavaScript 性能分析新工具 OneProfile
查看>>
Topcoder SRM625 题解
查看>>
win7上搭建Android环境及调试
查看>>
面向对象属于分解,函数编程属于组合
查看>>
New UWP Community Toolkit - RadialProgressBar
查看>>
IntelliJ IDEA 在运行web项目时部署的位置
查看>>
023-Spring Boot 服务的注册和发现
查看>>
Elasticsearch中Head插件的使用
查看>>
小米推送 简介 集成
查看>>
git排除常用配置,svn与git共存时.gitignore配置
查看>>
jest 自动化测试
查看>>
[日常] Go语言圣经--Channel习题
查看>>
ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF...
查看>>
IDEA攻略合辑
查看>>
Docker 三剑客之 Docker Swarm(基于 overlay 组网通信)
查看>>
[WPF]获取鼠标指针下的元素
查看>>
[Cypress] Find and Test Focused Input with Chrome’s DevTools in Cypress
查看>>
BZOJ 4326: NOIP2015 运输计划(二分,树上差分)
查看>>
记录搭建ssm项目
查看>>
WPF整理--动态绑定到Logical Resource
查看>>