速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Visual Studio 15 的内存占用探析

  • 2016-10-30
  • 本文字数:1542 字

    阅读完需:约 5 分钟

Jeff Martin 撰写了一系列关于 Visual Studio “15”性能分析的文章。在他的上一篇文章《 Visual Studio “15”的启动优化》中曾提到,微软已承诺全面提升 Visual Studio “15” IDE 的性能。本文将从内存处理的角度,探讨他们在 Technical Preview 5(TP5)中所做的提升:在主程序保留为一个 32 位进程的同时,将部分关键组件迁移到微软独有的进程。

在微软任职的 Ashok Kamath 针对这些改变在《 Visual Studio “15”的内存溢出崩溃减少优化》一文中做了更多的介绍,以便能从更全面的视角来看待这些改变。他提供了一种方法来度量微软开发团队所作出的改进。他提供了 2 个不同的指标:虚拟内存峰值 PVM(Peak Virtual Memory)和个人工作集峰值 PPWS(Peak Private Working Set)。PVM 指的是 VS15 主进程所占用的总内存数。由于主进程是 32 位的,因此它的最大值被限制为 4GB 内存。PPWS 指的是 VS15 的 devenv.exe 和相关进程所占用的物理内存数。

首先被移出 VS15 主进程的是 JavaScript 语言服务。JavaScript 语言服务提供智能提示、代码导航等功能。新的 JavaScript 服务由一个独立的 Node.js 进程协同 VS15 提供对 JavaScript 和 TypeScript 的支持。Kamath 团队通过在 VS 2015 Update 3(Visual Studio 之前的一个版本)和 VS15 Preview 5 中加载 WebSpaDurandal 方案来测量新服务的性能影响。在 VS15 Preview 5 中,PVM 占用量大约减少了 33%,但是 PPWS 的占用量减少得非常少,几乎可以忽略不计。

第二个内存优化的部分是关于调试器中的符号加载。纵观 Visual Studio 的近期发布历史,他们已经通过高侵入性地从 PDB 文件中预加载符号数据来让 C++ 调试器运行地更快。但是这个方案有一个弊端,那就是会消耗大量的内存。在 VS15 中,这个预加载功能被重写。新的预加载功能致力于只加载需要的信息而不是像之前那样“大而全”地加载。为了测量这一改进,Kamath 团队用 VS 2015 Update 3 和 VS15 Preview 5 打开 Unreal Engine 方案,并使用调试器调试 Unreal Engine 进程。结果,VS 2015 Update 3 不能执行这个操作,因为它会因为内存溢出错误而崩溃;TP5 可以执行这个操作,占用大约 3GB PVM 和大约 1.8GB PPWS。

第三个被移出主进程的是关于 Git 的组件。Visual Studio 的先前版本使用 libgit2 库,但是在 TP5 中改用 git.exe。通过使用 Chromium 包测量这个改进,发现在 TP5 中 VS 主进程占用了 0GB PVM,而 VS2015 占用了大约 300B PVM。至于 PPWS 的占用量,两者大致相当。

尽管测量工具已经提供了一些内存占用量减少的证据,但是开发者们获知这一消息后,针对微软采用的一些方案提出了许多问题。首先提到的是,更频繁的内存交换可能导致可用性下降。另外,一位名为“Syka”的评论者提出,尽管从主进程中移出部分组件会解除内存占用方面的限制,但是可能会造成潜在的性能下降。因为跨进程的进程通信相对于原来的进程内部的组件调用来说,会造成更高的通信成本。此外,一些评论者提到,Visual Studio 的真实问题并不是内存占用,而是由于主进程是 32 位而导致的寻址空间的稀缺。为此,他们再次呼吁微软能够开发 64 位版本的 Visual Studio(详情可参考《让VS 扩展支持64 位》)。

作者简介

Jeff Martin 拥有密歇根大学的 MBA 学位,曾在金融领域有所建树,但是为了紧随时代潮流,毅然投身计算机产业。他在业余时间喜欢和妻子一起旅行,阅读和编程。他刚著作了一本新书,《Visual Studio 2013 Cookbook》。可以在 Twitter 上关注他, http://twitter.com/jeffemartin

查看英文原文 Addressing Visual Studio 15’s Memory Usage


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-10-30 19:002544

评论

发布
暂无评论
发现更多内容

Audio Hijack for Mac(强大的音频录制软件)v4.4.5直装版

小玖_苹果Mac软件

Native Instruments Komplete Kontrol for mac(音源制作软件)v3.3.4免激活版

小玖_苹果Mac软件

SwitchResX for Mac(显示器屏幕分辨率修改工具)

Mac相关知识分享

Steinberg SpectraLayers Pro for mac(Mac音频频谱编辑器)v11.0.50激活版

小玖_苹果Mac软件

WinX HD Video Converter for Mac(高清视频转换软件)v6.8.3激活版

小玖_苹果Mac软件

Final Cut Pro for Mac(fcpx视频剪辑)

Mac相关知识分享

大模型安全 | “创造未来,安全同行” 北京站·第九期「度安讲」 技术沙龙开放报名

百度安全

跬智信息(Kyligence)获评钛媒体2024“年度 AI 应用”

Kyligence

#人工智能 企业 AI 应用

唯品会Vip商品详情 API 接口:开发应用与收益深度剖析

科普小能手

API 接口 API 测试 唯品会商品数据接口 唯品会 唯品会商品数据采集

淘宝买家秀数据接口(taobao.item_review_show)丨淘宝API实时接口指南

tbapi

淘宝API接口 淘宝买家秀接口

Axure RP 11 for Mac(快速原型设计工具)

Mac相关知识分享

作业帮T30和步步高S7的区别

妙龙

作业帮 学习机 步步高

Axure RP 10 for Mac(交互式原型设计)

Mac相关知识分享

LLM 分布式训练六大关键技术介绍

Baihai IDP

AI gpu LLMs Baihai IDP

AutoMQ热招岗位,等你来投!

AutoMQ

Java 云计算 招聘 岗位 AutoMQ

Screen Wonders for Mac(3D壁纸屏保软件)v3.2.0激活版

小玖_苹果Mac软件

Keka for Mac(文件压缩解压工具)

Mac相关知识分享

Premiere Pro 2024 for mac(pr2024 视频编辑器)

Mac相关知识分享

BBEdit for Mac v15.1.3 多功能代码编辑器

小玖_苹果Mac软件

Cookie for Mac(浏览器缓存清理工具)v7.4.6免激活版

小玖_苹果Mac软件

YT Saver for Mac(视频下载和转换器)v9.2.4激活版

小玖_苹果Mac软件

AI智能体的开发流程

北京木奇移动技术有限公司

AI教育 AI智能体 软件外包公司

【YashanDB知识库】要有好的跑批性能,有哪些参数要注意

YashanDB

数据库 yashandb

iTubeGo YouTube Downloader for Mac(YouTube 下载器)v9.2.4激活版

小玖_苹果Mac软件

DCommander for Mac(两窗格文件管理器)

Mac相关知识分享

AI英语作文练习APP的功能

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语作文

RapidClick for Mac(鼠标自动点击工具)

Mac相关知识分享

Steinberg WaveLab 12 Pro for Mac(母带制作工具) v12.0.50激活版

小玖_苹果Mac软件

重塑未来:Cloud Studio引领云端开发与学习的新纪元

代码忍者

杭州乘云联合中国信通院等单位正式发布《云计算智能化可观测性能力成熟度模型》标准

乘云数字DataBuff

云计算 可观测性 智能运维

ACDSee Photo Studio 11 for Mac(苹果电脑数字图像处理软件)

小玖_苹果Mac软件

Visual Studio 15的内存占用探析_.NET_Jeff Martin_InfoQ精选文章