当前位置: 首页 > 知识库问答 >
问题:

后端 - 为什么 vscode ssh remote 开发,会占用服务器 20GB+ 的内存且内存使用率很高?

谭敏学
2024-04-30

为什么 vscode ssh remote 开发,会占用服务器 20GB+ 的内存?

图片.png

发现是 pid 为 70640 的 vscode 进程占用了 20GB+ 的内存

╰─➤  cat /proc/70640/cmdline/home/pon/.vscode-server/cli/servers/Stable-e170252f762678dec6ca2cc69aba1570769a5d39/server/node/home/pon/.vscode-server/cli/servers/Stable-e170252f762678dec6ca2cc69aba1570769a5d39/server/out/server-main.js--connection-token=remotessh--accept-server-license-terms--start-server--enable-remote-auto-shutdown--socket-path=/tmp/code-a8364bd9-0edb-444a-96b5-e268882ad7ab

这是什么呀?vscode 本身内存泄露了,还是什么插件内存泄露了?

我本地的 vscode 版本是 1.88.1

图片.png

服务器上的 vscode 版本不知道怎么看,但应该和本地是一致的吧?


发现内存使用率也很高,有一个 vscode 相关的 node 进程,各占满一个 cpu core 100%

图片.png

共有1个答案

钦宏义
2024-04-30

VS Code 的远程开发功能通过 SSH 连接到远程服务器并在那里运行一个 VS Code 服务器进程。这个进程会消耗一定的内存,但是消耗 20GB+ 的内存是非常不寻常的。这可能是由于几个不同的原因:

  1. 内存泄露:无论是 VS Code 本身还是某个插件,都可能存在内存泄露。内存泄露是指程序在申请内存后,无法释放不再使用的内存,导致可用内存逐渐减少。这可能是由于代码错误或第三方库的问题。
  2. 大量的工作区文件:如果你的工作区包含大量的文件,VS Code 需要为这些文件建立索引并提供编辑支持,这可能会消耗大量的内存。
  3. 大量的扩展插件:VS Code 支持大量的扩展插件,这些插件可能会增加内存消耗。尝试禁用一些插件,看看是否可以减少内存消耗。
  4. 大文件或大数据:如果你正在编辑大文件或处理大量数据(例如,大数据编辑器或数据库查询结果),这也可能导致内存消耗增加。

要确定问题的根源,你可以尝试以下步骤:

  • 查看服务器上的 VS Code 版本:你可以通过 SSH 连接到服务器,并在 VS Code 服务器的安装目录中查找版本信息。通常,版本信息可以在 package.json 文件中找到。
  • 检查扩展插件:尝试禁用一些扩展插件,看看是否可以减少内存消耗。你可以通过 VS Code 的扩展视图来管理已安装的扩展插件。
  • 查看 VS Code 日志:VS Code 会生成日志文件,其中包含有关其操作和错误的详细信息。这些日志可能有助于诊断问题。你可以在 VS Code 的设置中查找日志文件的路径。
  • 使用性能分析工具:你可以使用性能分析工具(如 Node.js 的内置分析器或 Linux 的 perf 工具)来分析 VS Code 服务器的内存使用情况。这可能需要一些技术知识,但可以帮助你找到内存消耗较高的部分。

最后,如果问题仍然存在,建议向 VS Code 的开发者或相关插件的开发者报告问题,并提供尽可能多的详细信息,以便他们能够调查并修复问题。

 类似资料:
  • 【内存占用】页面主要展示项目运行过程中内存的使用情况,主要包括以下几个部分: 数据汇总 该项主要展示项目运行过程中的 “总内存峰值”、“堆内存峰值”、“GFX内存峰值” 和 “泄露风险”。其中,总内存为Unity引擎所统计的真实物理内存分配,并不包含系统缓存和第三方库的自身分配内存; 堆内存所指的是 Mono 管理和分配的托管堆内存; GFX内存为用于渲染的资源所占用的内存,主要包括纹理资源、网格

  • 问题内容: 这最终会消耗我所有的可用内存,然后进程被杀死。我曾尝试将标签从更改为“较小”标签,但这并没有什么不同。 我在做什么错/如何处理这个大文件? 我可以轻松地将其切碎并以较小的块进行处理,但这比我想要的还要难看。 问题答案: 当遍历整个文件时,将构建一棵树,并且不会释放任何元素。这样做的好处是元素可以记住其父元素是谁,并且您可以形成引用祖先元素的XPath。缺点是它会消耗大量内存。 为了在解

  • 我正在对Azure应用程序服务中托管的API进行性能测试。每当工作内存集图中出现峰值时,我的API响应时间就会增加。但我的应用程序服务计划显示,只有一个实例在运行,内存就占到了50-55%。 你能向我澄清一下,为什么每次“工作内存集”出现峰值时,API响应时间都在增加,即使我的应用程序服务计划内存只有50%左右? 响应时间图 工作记忆集图

  • 问题内容: 我有一小段代码每隔五分钟拍摄一次我的桌面的屏幕截图。但是,我对它占用的内存量有些困惑-通常它会爬升到200mb RAM,我敢肯定这是多余的…谁能告诉我a)减少内存占用空间的明智方法或b)它为什么涨 可言 ? 问题答案: 其他答案是正确的:Java将使用允许的尽可能多的内存,这时它将进行垃圾回收。要解决此问题,可以在JVM设置中指定较小的最大堆大小。您可以使用- Xmx设置来执行此操作。

  • 我有两个场景,其中我有分区 中,读取的输入数据为6.2 GB,缓存的对象为15.1 GB。 案例1: 从 读取的输入数据为 6.2 GB,缓存的对象为 5.5 GB。 对此行为有任何解释或代码参考吗?

  • 我的问题作为标题,通过搜索得到了一些知识: > Linux具有共享内存如何测量应用程序或进程的实际内存使用情况? JVM将保留在Xms中设置的内存量,对于堆内存,-Xms JVM是什么意思? 下面是我在Ubuntu12.04(64bit)JDK 1.7.0_04上的测试运行。和顶部显示如下: