问题标签 [swapfile]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - .NET 4.0 进程执行暂停几秒钟,与 Full GC 一致,是由交换文件活动引起的吗?
我有许多运行相同进程的 Windows 2008 R2 24 核心服务器,但进程的每个实例都有不同的数据集。通常在每台服务器上运行 2-4 个进程实例。这些进程针对 x64 编译,具有 GUI,并使用 Workstation GC。
每一秒,该进程都会将 GC 计数输出到本地磁盘上的日志文件中。日志也用于许多其他事情。偶尔,我发现其中一个进程会暂停执行 5 秒或更长时间。我看到在这段时间内没有任何内容写入日志。每次发生这种情况时,Gen2 GC 的数量都会增加 1。
这是一个罕见的事件。这可能在所有进程中每 10000 次 Gen2 GC 发生一次。
每台机器都有足够多的 RAM 来将所有进程保存在 RAM 中。
今天早上,我在其中一个进程中暂停了 9 秒,这次我捕获了受影响进程和整个机器的性能计数器。当时运行的其他进程都没有受到影响。性能计数器分析显示以下内容:
暂停后与暂停前的比较:
- 进程的虚拟字节、页面文件字节、虚拟字节、工作集和私有工作集减少了大约相同的数量 - 1Gb。为了让您了解进程的大小,私有字节从 3.1 Gb 下降到 2.1 Gb。
- 进程的句柄计数从 8835 减少到 8705
- 整个机器的可用字节增加了大约 1 Gb
- 页面错误/秒没有达到峰值
- 暂停期间 CPU 使用率稳定
谁能确认此活动可归因于交换?鉴于机器有足够多的 RAM,是否有任何修复这些暂停的建议?
更新 #1(2012 年 3 月 5 日):
今天在其中一个过程中经历了 6.5 秒的暂停。.NET Clr 内存性能计数器显示 LOH 的大小没有改变,但 Gen 2 堆的大小和所有堆的大小以及提交的总字节数下降了 700 Mb。总保留字节减少了 250 Mb。因此,似乎在这个特定的 GC 上回收了 Gen2 中的很多垃圾。
更新 #2(2012 年 3 月 6 日):
今天在其中一个过程中经历了 7 秒的停顿。以下内容已删除:第 2 代堆大小(.NET CLR 内存)增加了 900 Mb 所有堆中的 Num 字节数(.NET CLR 内存)减少了 900 Mb 提交的总字节数(.NET CLR 内存)增加了 800 Mb 保留的字节总数(.NET CLR 内存)。 NET CLR 内存)540 Mb 虚拟字节(进程)550 Mb 工作集(进程)800 Mb 工作集 - 私有(进程)页面文件字节(进程)800 Mb 私有字节(进程)800 Mb
LOH保持不变
.net - 可以在 VB6 中使用 /SWAPRUN 选项(或等效选项)吗?
我对该/SWAPRUN
选项(MSDN 链接)的理解是,它会导致将可执行文件加载到交换文件并从那里执行。
这种机制在 VB6 中是否可行?
android - 如何强制暂停进程的内存进行交换?
我正在寻找改进 UI 以防止内存为 256MB 的 Android 设备滞后的方法。内存非常有限,以至于大型前端应用程序会触发大量其他应用程序的交换。
这个想法是:如果一个后台应用程序(例如 Facebook 应用程序)不需要持续运行,不像电话,它必须保持不间断,只需暂停该应用程序的进程,并每隔几分钟继续运行一次以检索更新,仅当手机在口袋里闲置时,然后再次暂停该过程。
为了减少换出其他应用程序内存的延迟,我希望暂停的应用程序的内存可以主动交换到磁盘/闪存,以便可以立即释放 RAM,以满足前端应用程序的需求。(参考速度:class 10 SDHC:10MB/s 写入,所以如果网页需要占用 20MB RAM,浏览器会延迟 2 秒)
所以我的问题是:如何强制系统将暂停进程的私有内存交换到磁盘/闪存中?
macos - 不能使用超过 1.5 GB 的 4 GB RAM 进行简单排序
我使用的是大约 2007 年夏季推出的 MacBook Pro (x86-64),配备 32KB L1(我认为)、4MB L2 和 4GB RAM;我正在运行 OS X 10.6.8。
我正在用 C++ 编写标准的基数排序:它在排序时从一个数组复制到另一个数组并再次返回(因此使用的内存是数组大小的两倍)。我通过打印一个“。”来观看它。每百万个条目移动。
如果数组最多为 750 MB,那么这些点通常移动得很快;但是,如果数组更大,那么整个过程就会停止。如果我以块为单位对 512 MB 进行基数排序,然后尝试对这些块进行合并排序,则第一个块运行得很快,然后进程再次爬入停止。也就是说,我的进程似乎只能使用 1.5 GB 的 RAM 进行排序。奇怪的是我有 4 GB 的物理 RAM。
我尝试分配一个 8 GB 数组并遍历它写入每个字节并打印一个“。” 每百万字节;当我知道它必须进入磁盘时,似乎一切都开始减慢 1.5 GB 并保持在该速度甚至超过 4 GB;因此操作系统开始将页面写入大约 1.5 GB 的磁盘。
我想用我的机器对大数组进行排序。我如何告诉我的操作系统至少给我的进程提供 3.5 GB 的 RAM ?我尝试使用 mlock(),但这似乎让事情变得更加缓慢。想法?
git - 通过名称找到一个交换文件
当我尝试将我的分支与远程分支合并时:
我收到了这条消息:
如何处理?
sftp - sublime text 2 对文件的并发访问
我使用带有插件 SFTP 的 Sublime text 2 来编辑服务器上的文件。
当我试图编辑的文件已经被其他人打开时,是否有一个选项可以引发某种标志?(使用交换文件或其他东西)
linux - 进程因内存过多而终止?
我在 VMWare 上运行了 Ubuntu 12.10(内核 3.9.0-rc2)安装。我给了它 512MB RAM。
cat /proc/meminfo 显示:
MemTotal:507864 KB
MemFree:440180
我想使用交换(出于某种原因),所以我编写了一个 C 程序,它分配了一个 500MB 数组(使用 malloc())并用垃圾填充它。但是,程序在填满整个数组之前就被杀死了,屏幕上会出现一条消息“Killed”。
我想问这是否是正常行为,这背后的原因是什么?在我看来,应该使用交换,因为可用 RAM 不足。
编辑:我没有提到我有 1GB 交换。cat /proc/swaps 显示:
/dev/sda5 大小:1046524 已使用:14672
。当我运行消耗内存的程序时,“已使用”数量会增加。但是正如你所看到的,很多交换是剩余的。那么为什么程序必须被“杀死”呢?
c++ - 如果内存有限,new 会自动使用交换吗?
如果我尝试分配内存:
我会得到磁盘交换来填充空间吗?如果没有,我该如何使用交换?
xcode - 如何在 Mac 中清除交换文件
我正在使用 Xcode 4.2 制作一个小项目,它使用以下库的当前版本 - Ogre3d、ArUco、Bullet(使用 OgreBullet 包装器)和 OpenCv。我在交换文件方面遇到了一个大问题,大概是由于 Xcode 中的内存泄漏。每隔几次构建和运行后,Xcode 的 RAM 使用量就会增加。
主要问题是:在工作 3-4 小时后,我的交换文件以惊人的速度增长到接近 10Gb,这迫使我在磁盘空间用完时重新启动机器以将其清除。
有没有办法在不重新启动的情况下释放这个交换空间?谢谢!
*在许多mac论坛上报告了很多类似的问题,但没有任何地方提到明确的解决方案。
android - 为什么大多数 Android 设备不像典型操作系统那样具有交换区域?
今天是否有任何 Android 支持可以提高性能的交换区域?
大多数 Android 设备放弃该功能的考虑因素是什么?