Visual Studio 性能提示和技巧

Visual Studio 性能建议适用于内存不足的情况,这种情况在极少数情况下可能发生。 在这些情况下,可以优化可能未使用的某些 Visual Studio 功能。 以下提示不适用于常规建议。

说明

如果由于内存问题而无法使用该产品,请通过 反馈工具告知我们。

使用 64 位 OS

如果将系统从 32 位版本的 Windows 升级到 64 位版本,请将 Visual Studio 可用的虚拟内存量从 2 GB 扩展到 4 GB。 64 位操作系统升级使 Visual Studio 能够处理更大的工作负载。

有关详细信息,请参阅 Windows 和 Windows Server 版本的内存限制

提示

Windows 上的 Visual Studio 2022 是一个 64 位应用程序。 早期版本为 32 位。

禁用自动文件还原

Visual Studio 会自动重新打开在上一个会话中打开的文档。 此自动文件还原操作可能会延长加载解决方案所需的时间,最多 30% 或更多,具体取决于项目类型和要打开的文档。 Windows 窗体和 XAML 等设计器以及一些 JavaScript 和 TypeScript 文件打开速度可能很慢。

当自动文档还原导致解决方案加载速度变慢时,Visual Studio 会在黄色栏中通知你。 可以按照以下步骤禁用自动文件重新打开:

  1. 选择 工具>选项 打开“选项” 对话框。

  2. 在“项目和解决方案”>“常规”页面上,取消选中“重新打开解决方案加载文档”。

如果禁用自动文件还原,则导航到要打开的文件的快速方法是使用 转到 命令之一:

  • 对于常规“转到”功能,请选择“编辑”>“转到”>“转到所有”(或按 Ctrl+T)。

  • 可使用“编辑”>“转到”>“转到上次编辑的位置”(或按“Ctrl”+“Shift”+“Backspace”)跳转到解决方案中上次编辑的位置。

  • 使用 转到最近访问的文件 查看解决方案中最近访问的文件的列表。 选择 编辑>转到>转到最近的文件,或按 Ctrl+1Ctrl+R

配置调试选项

如果在调试会话期间内存不足,可以通过进行一个或多个配置更改来优化性能。

  • 启用“仅我的代码”

    最简单的优化是启用 “仅我的代码” 功能,该功能仅加载项目的符号。 启用此功能可能会导致调试托管应用程序(.NET)节省大量内存。 某些项目类型中已默认启用此选项。

    若要启用 仅我的代码,请依次选择 工具>选项>调试>常规,然后选择 启用仅我的代码

  • 指定要加载 的符号

    对于本机调试,加载符号文件(.pdb)对内存资源来说消耗很大。 可以将调试器符号设置配置为节省内存。 通常,将解决方案配置为仅从项目加载模块。

    若要指定符号加载,请选择 工具>选项>调试>符号

    将选项设置为“仅加载指定模块”,而不是“加载所有模块”,然后指定要加载的负载。 调试时,还可以在 模块 窗口中右键单击特定模块,以在符号加载中显式包含模块。 (若要在调试时打开窗口,请选择 调试>Windows>模块。)

    有关详细信息,请参阅在调试程序中指定符号文件和源文件

  • 禁用诊断工具

    建议在使用后禁用 CPU 性能分析。 此功能可能会消耗大量资源。 启用 CPU 分析后,此状态会在后续调试会话中持久保存,因此在完成后,它值得显式关闭。 如果不需要提供的功能,可以在调试时禁用诊断工具来节省某些资源。

    若要禁用 诊断工具,请启动调试会话,选择 工具>选项>调试>常规,然后在调试 选项时取消选择“启用诊断工具”

    有关详细信息,请参阅 分析工具

禁用工具和扩展

某些工具或扩展可以关闭以提高性能。

提示

通常可以通过一次关闭一个扩展并重新检查性能来隔离性能问题。

托管语言服务 (Roslyn)

有关 .NET 编译器平台(“Roslyn”)性能注意事项的信息,请参阅 大型解决方案的性能注意事项

  • 禁用 CodeLens

    Visual Studio 对显示的每个方法执行“查找所有引用”任务。 CodeLens 提供内联显示引用数目等功能。 该工作在单独的进程中执行,例如 ServiceHub.RoslynCodeAnalysisService32。 在大型解决方案或资源约束系统上,此功能可能会对性能产生重大影响。 例如,如果在 4 GB 计算机上加载大型解决方案或此过程的 CPU 使用率较高时遇到内存问题,则可以禁用 CodeLens 以释放资源。

    若要禁用 CodeLens,请选择 工具>选项>文本编辑器>所有语言>CodeLens,然后取消选择该功能。

    有关详细信息,请参阅 使用 CodeLens查找代码更改和其他历史记录。

其他工具和扩展

  • 禁用扩展

    扩展是添加到 Visual Studio 的其他软件组件,可提供新功能或扩展现有功能。 扩展通常是内存资源问题的源。 如果遇到内存资源问题,请尝试一次一次禁用一个扩展,以查看它如何影响方案或工作流。

    若要禁用扩展,请转到 扩展>管理扩展,并禁用特定扩展。

  • 禁用地图模式

    地图模式 在滚动条上以微型方式显示代码行。 默认情况下,地图模式处于启用状态。

    若要禁用地图模式,请转到 工具>选项>文本编辑器>所有语言>滚动条,然后在“行为”部分中,取消选择 “使用地图模式进行垂直滚动条”选项。

  • 禁用自动换行

    自动换行显示长代码行中超出代码编辑器窗口当前宽度的部分。 自动换行默认处于打开状态。

    要针对当前正在处理的项目禁用自动换行,请转到“编辑”>“高级”>“自动换行”。 (可以使用同一菜单命令切换此设置。

    若要禁用所有项目的自动换行,请转到 工具>选项>常规>文本编辑器>所有语言>常规语言,然后在“设置” 部分中,取消选择“换行”选项。

  • 禁用 XAML 设计器

    默认情况下,XAML 设计器处于启用状态,但仅当打开 .xaml 文件时,才会消耗资源。 如果使用的是 XAML 文件,但不希望使用设计器功能,请禁用此功能以释放某些内存。

    若要禁用 XAML 设计器,请转到 工具>选项>XAML 设计器>启用 XAML 设计器,然后取消选择该选项。

  • 删除工作负荷

    可以使用 Visual Studio 安装程序删除不再使用的工作负载。 此操作可以通过跳过不再需要的包和程序集来简化启动和运行时成本。

  • 将未跟踪的文件添加到本地 .gitignore

    Visual Studio 使用未跟踪的文件运行 Git 命令 git status,以在将新文件添加到存储库时提供无缝体验。 当存在大量未跟踪的文件时,git status 可能会占用额外的内存。 若要忽略这些文件并提高 git status的性能,可以将这些文件或文件夹添加到本地 .gitignore 文件。 若要访问该文件,请转到 Git>设置>Git 存储库设置。 然后,在 Git 文件 部分中,选择 添加 以创建 .gitignore 文件,或者选择 编辑(如果有)。

  • 在 Git 工具中启用提交图

    Visual Studio 2022 版本 17.2 中的新增功能:如果在 Visual Studio 中查看 Git 存储库或分支历史记录时遇到延迟,我们集成了一项可提供帮助的“提交图形”功能。 若要使用提交图,请确保下载并安装 Visual Studio 2022。 若要了解有关提交图的详细信息,请参阅增强 Visual Studio 中的 Git 体验博客文章。

强制垃圾回收

CLR 使用垃圾回收内存管理系统。 在这个系统中,有时内存仍然被已经不需要的对象占用。 这一状态是临时的,垃圾回收器会基于其性能和资源使用情况试探法释放此内存。 可以使用 Visual Studio 中的热键强制 CLR 收集任何未使用的内存。 如果存在大量垃圾等待回收,并且强制进行垃圾回收,则应看到 任务管理器devenv.exe 进程的内存使用率下降。 很少需要使用此方法。 但是,在完成大量操作(例如完整生成、调试会话或解决方案打开事件)之后,它可以帮助你确定进程真正使用的内存量。 由于 Visual Studio 属于混合型(托管和本机),因此本机分配器和垃圾回收器有时可能会竞争有限的内存资源。 在内存使用率高的情况下,它可能有助于强制垃圾回收器运行。

若要强制垃圾回收,请使用以下键盘快捷方式:Ctrl+Alt+Shift+F12Ctrl+Alt+Shift+F12(按两次)。

如果强制垃圾回收能够可靠地使场景正常工作,请通过 Visual Studio 反馈工具提交报告,因为此行为可能是一个错误。

有关 CLR 垃圾回收器的详细说明,请参阅 垃圾回收基础知识。