问题标签 [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.

0 投票
1 回答
1464 浏览

java - How to keep Java Swing application out of swap/page file?

So I have this Java Swing app that has a curious usage pattern: it's not used all the time, but when it's used, it's essential that it's available immediately. And when I say immediately, I mean that it has to be ready for user input as soon as user presses shortcut to bring it in foreground.

The problem is, Windows (and OS generally) tends to put applications which are idle in swap. And when application window comes into foreground, on a typical IDE-powered system, it takes a few seconds for JVM to get loaded to memory again, for Swing to redraw window etc. I'm trying to avoid this and somehow suggest to OS to keep application in memory.

I have tried the following:

  1. Playing with -Xms JVM option. This doesn't really help with swap, although it does help somewhat, but it's hard to measure and inconsistent (in other words, fails in most cases).
  2. Running a task within the app that does something at regular intervals (go through the data, redraw main JPanel, etc). This doesn't seem to help at all. But maybe I haven't thought of correct something.
  3. Turning off swap file completely. This does help, but is obviously not something that is recommended for all setups, and I can't really bother (or count on) users to do this.

I'd be grateful for any ideas. Application is multiplatform, but focus is on Windows, and I'm OK with doing different thing for different OS if needed. I'm willing to play nice with OS if at all possible but I'm also ready to play rough if needed. My thinking is that OS probably doesn't provide a way for application to communicate its preference, but there must be a way to modify application behavior so that OS figures out that application is not a good candidate to put in swap.

EDIT: I have had some progress on this issue, with option 2. I've created a TimerTask which fires off once an hour and basically brings JFrame to front, that is, executes jFrame.setVisible(true) and jFrame.toFront(). This indeed keeps main window responsive! However as soon as another part of application needs to be accessed there is that dreadful pause again. This makes sense as OS probably keeps in memory only pages that are accessed. There must be a way to access all pages in JVM without flashing application window in front of the user, without needing to know application specific objects (don't want to update this code every time application is modified), and without compiler deciding that the access operation is no-op and skipping it.

0 投票
2 回答
310 浏览

vim - 特定位置文件的 vim 交换文件的特殊路径

由于我的配置,vim 将交换文件存储在与编辑文件相同的目录中。一般来说,这是可以的,但不在文件夹中~/ftp_mount(以及下面的所有目录)。在这个目录中,我挂载了一个 ftp 服务器。

:set dir=/一些/路径

可以更改 vim 存储交换文件的位置(vim 文档)。是否可以将此配置限制为~/ftp_mount以下所有目录?

0 投票
2 回答
2973 浏览

digital-ocean - 在 CoreOS 云配置中执行命令(例如添加交换)

我看到与标准文件不同的是,CoreOS文件cloud-config中没有选项。目前,我通过将以下内容添加到我的 CoreOS 机器上启用交换:runcmdcloud-configcloud-config

然后在初始化我的 CoreOS 映像后,我必须 ssh 进入机器并运行:

在启用交换之前(例如,由 证明top)。

似乎我应该能够在cloud-config文件本身中完成后面的命令,但我不清楚如何在runmcd没有cloud-config. 也许这可以通过编辑我的swap.service单元或添加另一个来完成unit,但我还没有弄清楚如何。

所以,这给我留下了两个问题:(1)这可以完成还是总是需要手动运行最后一个命令?(2) 如果是前者,那又如何?

0 投票
3 回答
24519 浏览

virtual-machine - 虚拟机需要交换分区吗?

我在我的物理机上运行 Ubuntu;和 VirtualBox 在上面运行各种虚拟的。

大多数时候,我都在做“直截了当”的安装。但今天我想变得“聪明”,并检查了 Fedora 或 ubuntu 安装程序将在我的虚拟磁盘上创建的分区。

当然,在使用默认值时,我的一些 GB 虚拟磁盘将用作“交换空间”。

现在我想知道:假设我有足够的物理内存(所以我可以为 VM 分配 6 或 8 GB) - 虚拟机的专用交换空间有什么意义吗?

0 投票
0 回答
206 浏览

memory-mapping - 文件映射内存(扩展交换空间)?

我有一组图像处理工具,最终可能会消耗大量内存,因为它用于处理大量图像(~50k x 50k x 1000 -> 2.5 terapixel)。虽然我确实尽可能地将东西保存在磁盘上并尽可能处理单个切片(低至 2.5 千兆像素),但有时它只是不起作用。

我想做的是拥有一块可以写入的内存,如有必要,将写入磁盘。这是交换空间背后的基本理念,但不需要 root/admin 访问权限和重新启动设置。这个交换空间将特定于我的进程和我指定的内存。

一种方法是使用内存映射文件。然而,我相信这有一些缺点。内存映射文件可能会起作用,也许我只需要纠正这些误解。请告诉我内存映射的实际工作原理(最好在 Windows 和 Linux 上)。

  1. 内存映射文件是否会尝试同步到磁盘?我希望它们从不同步,除非出于 RAM 目的需要(鉴于我从不调用 msync / FlushViewOfFile)。

  2. 如果我首先只将页面大小的数据块写入内存映射区域,那么底层文件是否被读取过?在 Linux 上:底层文件可以是使用 ftruncate-ing 创建的稀疏文件到所需大小吗?

  3. 在 Linux 上:有没有办法获得私有的非写时复制内存映射?

  4. 更改内存保护 (mprotect / VirtualProtect) 是否会导致数据同步?

0 投票
2 回答
11320 浏览

linux - Linux有页面文件吗?

我在几个地方发现 Linux 使用页面和分页机制,但我没有找到该文件所在的任何地方或如何配置它。

我找到的所有信息都是关于 Linux 交换文件/分区的。分页和交换之间有区别:

分页将页面(包含一段数据的小帧 - 通常为 4 KB,但在不同的操作系统之间可能会有所不同)从主内存移动到后端存储,总是作为操作系统的正常功能发生。交换将整个进程移动到存储中,并在系统内存紧张或在 Windows 8 上当新应用程序处于休眠状态时发生。

Linux 是否在这两种情况下都使用它的交换文件/分区?如果是这样,我如何查看当前已调出多少页?此信息在 vmstat、free 或 swapon 命令中不存在(或者我看不到它)。

或者是否有另一个文件用于分页?如果是这样,我该如何配置它(并观察它的使用情况)?

或者Linux根本不使用分页,我被误导了?

如果答案将特定于红帽企业 Linux 版本 6 和 7,而且关于所有 Linux 的一般答案将是好的,我将不胜感激。

提前致谢。

0 投票
2 回答
247 浏览

systemd - 用于 swapon 的 Systemd 单元文件在启动时不运行

我有一个可以进行 swapon 的 systemd 单元文件,但即使它已启用,它似乎也不会在每次启动时运行。

以下是我的内容swapon.service

这应该有选择地创建文件并将其转换为交换文件(如果尚未完成),然后在其上运行 swapon。它已启用,但不会在启动时运行;我必须手动运行sudo systemctl start swapon哪个确实有效。

如何让它在启动时运行?

0 投票
1 回答
298 浏览

makefile - 即使在创建交换文件后也无法编译图形工具

我正在尝试在具有 4GB RAM 的笔记本电脑上安装图形工具。我意识到 RAM 不够用,因此我使用此处给出的说明创建了一个 4GB 大小的交换文件。但是,之后我仍然不断收到以下错误sudo make

我无法理解这个问题。我需要告诉系统使用交换文件中的内存的任何特定方式吗?

提前致谢。

0 投票
1 回答
2570 浏览

amazon-web-services - 我可以在 AWS Elastic Beanstalk 上配置 Linux 交换空间吗?

我可以为 AWS Elastic Beanstalk 环境配置 Linux 交换空间吗?

我在控制台中看不到它的选项。从/proc/meminfo我的环境MemAvailable中运行的实例来看,尽管值很高,但看起来很低Inactive。我怀疑有一些休眠的后台进程不会对分页造成伤害,并且会释放t2.nano我正在使用的有限物理内存的重要部分。

0 投票
0 回答
58 浏览

ram - windows下的虚拟内存

我正在开发一个使用巨大内存大小的程序。不幸的是,没有办法减少它。在 linux 中,当 ram 较低时,我可以生成一个交换文件并将其挂载到解决我的问题的系统,但在 windows 中我该怎么做,或者是否有任何 api(c/c++) 可以使用像 ram 这样的临时文件?