Ubuntu无头模式下Charles Proxy内存溢出及会话清理配置问题
Ubuntu无头模式下Charles Proxy内存溢出与会话自动清理解决方案
一、调整Java内存参数(修改-Xmx)
从报错日志可知,Charles的启动脚本是/usr/bin/charles,而非官方文档提到的charles.sh,调整内存参数有两种方式:
方式1:直接修改启动脚本
- 打开脚本文件:
sudo nano /usr/bin/charles
- 找到第47行的启动命令:
$JAVA -Xmx1024M -Dcharles.config="~/.charles.config" -Djava.library.path="$CHARLES_LIB" -jar $CHARLES_LIB/charles.jar $*
- 将
-Xmx1024M改为更大的值(比如-Xmx4096M,根据服务器内存情况调整),保存退出后重启Charles即可。
方式2:通过环境变量设置(无需修改脚本)
启动Charles前,先设置环境变量:
export CHARLES_OPTS="-Xmx4096M" charles --config /home/user/charles.config --headless
如果需要永久生效,可将export CHARLES_OPTS="-Xmx4096M"添加到~/.bashrc或/etc/profile文件中。
二、无头模式下配置会话自动清理
你设置的promptToClearSession和saveLowMem参数不适用于无头模式,需使用以下配置:
1. 修改Charles配置文件(charles.config)
在配置文件中添加或修改以下参数:
# 自动保存会话的间隔(单位:秒,示例为每1小时保存一次) session.autoSaveInterval=3600 # 保存会话后自动清理当前会话 session.autoClearAfterSave=true # 设置会话最大条目数,达到后自动清理旧条目(示例为10000条) session.maxEntries=10000 # 设置会话最大占用内存(示例为2048MB) session.maxSize=2048
修改后重启Charles,即可实现会话自动保存并清理。
2. 定时调用CLI命令清理(可选)
如果配置文件方式不生效,可结合cron定时任务调用Charles的CLI命令清理:
- 先在charles.config中开启远程控制:
remoteControl.enabled=true remoteControl.port=8888
- 创建cron定时任务(比如每小时清理一次):
crontab -e
添加一行:
0 * * * * charles cli clear-session
保存退出后,cron会自动定时执行清理操作。
注意:使用CLI命令前,确保Charles已开启远程控制,且当前用户有权限执行该命令。
内容的提问来源于stack exchange,提问作者vvl
相关产品推荐
相关产品推荐

