VS Code运行Python/PySpark代码时意外终止(错误码15)求助
解决VS Code Jupyter Notebook在Manjaro Linux下崩溃问题(错误:window terminated unexpectedly reason 'killed' code '15')
问题确认
你的问题核心是Snap安装的VS Code在运行Python/PySpark或Keras训练代码时,频繁因系统内存不足触发进程终止(错误码15),即使调小训练参数(epochs=1、batch_size=5)也无法避免,Jupyter内核也会直接终止。
具体解决方案
1. 验证内存不足的猜测
- 运行代码时打开终端执行
htop,实时监控内存、swap占用率,观察进程被终止前是否出现内存占满的情况。 - 查看系统OOM日志确认原因:
如果日志中出现类似journalctl -xe | grep -i killedOut of memory: Killed process的记录,即可确认是内存不足导致。
2. 解除Snap版VS Code的内存限制
Snap包默认会对应用施加资源限制,这可能是关键问题:
- 赋予VS Code内存监控权限:
sudo snap set code system-observe=true - 调整VS Code的内存配额(根据你的机器内存设置,比如8G):
sudo snap set code memory.high=8G - 更彻底的方案:换成Manjaro官方仓库的VS Code
- 卸载Snap版:
sudo snap remove code - 安装官方包:
sudo pacman -S code
- 卸载Snap版:
3. 优化代码的内存占用
即使batch_size很小,一次性加载超大数据集也会耗尽内存:
- 使用Keras的数据集生成器或
tf.data.Dataset分批加载数据,避免一次性把所有数据载入内存:from tensorflow.data import Dataset def create_dataset(x, y, batch_size): return Dataset.from_tensor_slices((x, y)).shuffle(len(x)).batch(batch_size) train_ds = create_dataset(partial_x_train, partial_y_train, 5) val_ds = create_dataset(x_val, y_val, 5) history = model.fit(train_ds, epochs=1, validation_data=val_ds) - 手动释放无用变量,回收内存:
import gc # 释放原始数据集内存 del x_train, y_train gc.collect()
4. 系统层面优化内存配置
- 扩大swap分区(如果当前swap不足):
- 创建4G大小的swap文件(可按需调整):
sudo fallocate -l 4G /swapfile - 设置权限:
sudo chmod 600 /swapfile - 格式化并启用:
sudo mkswap /swapfile sudo swapon /swapfile - 写入
/etc/fstab永久生效:echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab
- 创建4G大小的swap文件(可按需调整):
- 调整OOM杀手优先级,避免优先终止VS Code/Python进程:
- 查看当前VS Code进程的OOM分数:
cat /proc/$(pidof code)/oom_score_adj - 调低分数(数值越小,越不容易被OOM杀死):
sudo echo -1000 > /proc/$(pidof code)/oom_score_adj
- 查看当前VS Code进程的OOM分数:
内容的提问来源于stack exchange,提问作者bdzh
相关产品推荐
相关产品推荐

