About swap space

本文介绍如何在Ubuntu系统中通过创建swap文件实现虚拟内存,并详细解释了swap空间的作用、选择实现方式及大小的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Swap空间(swap space)也叫做虚拟存储分区(virtual memory partition),主要用于存储由主内存(main memory)所包含的非经常性需要的程序和程序数据,以允许更多的并发进程的执行。

Swap空间可由一个或多个逻辑分区、一个或多个物理磁盘、swap文件(swap file)实现。在Ubuntu的安装过程中
会提示需要创建一个swap空间,但是你也可以选择安装Ubuntu后创建,或根本不建如果你有足够的物理内存:-)

1. 如何选择swap空间的实现方式,是逻辑分区还是swap文件?
逻辑分区的实现方式较于swap文件具有更快、一定的物理容错能力的优点,但也具有日后调整空间大小存在一定的风险性的缺点。

2. 如何选择swap空间的大小?
按比较老的规则通常会将swap空间的大小定为物理内存RAM的2到3倍,这是老规则也是比较简单的规则,但也不失为一个好的开始:) 选择swap空间的大小主要取决于使用Ubuntu的主要用途、机器的物理内存和可用的磁盘空间3个因素。

问题不在于选择的结果,而在于如何选择。我的机器有1GB的RAM,也做了一个1GB的swap空间,但我发现除了在Suspend的时候会使用小部分(不足200MB)的swap空间。所以,我选择以512MBswap文件来实现swap空间,如果有人有和我一样的选择,以下以swap文件实现swap空间的方法可供参考。

Step-1 创建swap文件:
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=524288
以上bs * count = swap空间(Bytes),这里是在/路径下创建一个名为swapfile的512MB的swap文件,swap文件在哪里并不重要。

Step-2 设置swap空间:
$ sudo mkswap /swapfile

Step-3 配置crontab启动文件:
首先,以
$ sudo crontab -e
将crontab文件设为编辑状态; 其次,在crontab文件中添加以下的一行文本
@reboot sudo swapon /swapfile

Step-4 重启

Step-5 检测swap空间的使用情况:
可以使用
$ free -m
或gkrellm (一个gui检测工具)检测swap空间的使用率。
如果对swap空间的使用率作出检测后不满意,可以按照Step-6和Step-7首先禁用swap空间,然后重新按照Step-1至Step4重新调整swap空间的大小。可以方便地调整swap空间的大小是使用swap文件实现swap空间的一个优势。

Step-6 禁用swap空间:
首先,
$ sudo swapoff /swapfile
其次,删除Step-3中添加的那一行文本。



 
yarn run v1.22.22 $ vite build vite v5.4.6 building for production... transforming (1) index.html {pwa_medium_icon} referenced in {pwa_medium_icon} didn't resolve at build time, it will remain unchanged to be resolved at runtime transforming (13176) node_modules/react-dnd/dist/hooks/useCollectedProps.js <--- Last few GCs ---> [74021:0x8196000] 59111 ms: Mark-Compact 972.2 (1002.2) -> 962.5 (1001.3) MB, pooled: 0 MB, 1290.77 / 0.02 ms (average mu = 0.127, current mu = 0.161) allocation failure; scavenge might not succeed [74021:0x8196000] 60603 ms: Mark-Compact 971.3 (1001.8) -> 964.1 (1002.8) MB, pooled: 0 MB, 1359.11 / 0.00 ms (average mu = 0.109, current mu = 0.089) allocation failure; scavenge might not succeed <--- JS stacktrace ---> FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory ----- Native stack trace ----- 1: 0xe16044 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v22.17.0/bin/node] 2: 0x11e0dd0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v22.17.0/bin/node] 3: 0x11e10a7 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/root/.nvm/versions/node/v22.17.0/bin/node] 4: 0x140e985 [/root/.nvm/versions/node/v22.17.0/bin/node] 5: 0x140e9b3 [/root/.nvm/versions/node/v22.17.0/bin/node] 6: 0x1427a8a [/root/.nvm/versions/node/v22.17.0/bin/node] 7: 0x142ac58 [/root/.nvm/versions/node/v22.17.0/bin/node] 8: 0x1c90921 [/root/.nvm/versions/node/v22.17.0/bin/node] Aborted (core dumped) error Command failed with exit code 134. info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值