Debian系统上Java内存配置技巧
堆内存是Java应用存储对象实例的主要区域,需根据应用实际内存需求调整。常用参数:
-Xms512m表示初始512MB);-Xmx4g表示最大4GB)。java -Xms512m -Xmx4g -jar yourapp.jar;.sh启动脚本(如start.sh),添加JAVA_OPTS="-Xms512m -Xmx4g",保存后重启应用;~/.bashrc文件,添加export JAVA_OPTS="-Xms512m -Xmx4g",执行source ~/.bashrc使配置生效,后续通过java $JAVA_OPTS -jar yourapp.jar启动。Java 8及以上版本使用元空间(Metaspace)替代传统永久代(PermGen),用于存储类元数据。常用参数:
-XX:MetaspaceSize=128m);-XX:MaxMetaspaceSize=256m)。垃圾回收效率直接影响应用性能,需根据应用特点选择合适的GC策略:
-XX:+UseParallelGC(启用并行GC)、-XX:ParallelGCThreads=4(设置并行GC线程数,通常为CPU核心数的1/4~1/2)、-XX:MaxGCPauseMillis=100(目标最大GC暂停时间,单位毫秒);-XX:+UseG1GC(启用G1 GC)、-XX:MaxGCPauseMillis=200(目标最大GC暂停时间,默认200ms)、-XX:InitiatingHeapOccupancyPercent=45(触发并发GC的堆占用率阈值)。java -Xms4g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -jar yourapp.jar。Swap空间作为物理内存的补充,可缓解内存不足导致的应用崩溃。配置步骤:
sudo fallocate -l 4G /swapfile;sudo chmod 600 /swapfile(仅root可读写);sudo mkswap /swapfile;sudo swapon /swapfile;/etc/fstab文件,添加/swapfile none swap sw 0 0,保存后Swap会在系统重启后自动启用。若应用通过systemd管理(如yourapp.service),编辑服务文件(/etc/systemd/system/yourapp.service),在[Service] section添加内存参数:
[Service]
ExecStart=/usr/bin/java -Xms512m -Xmx4g -jar /path/to/yourapp.jar
Restart=always
保存后执行sudo systemctl daemon-reload(重新加载配置)和sudo systemctl restart yourapp.service(重启服务)。
若应用通过传统init.d脚本启动(如/etc/init.d/yourapp),编辑脚本,找到启动命令行,添加内存参数:
#!/bin/sh
JAVA_OPTS="-Xms512m -Xmx4g"
APP_PATH="/path/to/yourapp.jar"
start() {
echo "Starting yourapp..."
java $JAVA_OPTS -jar $APP_PATH &
}
保存后执行sudo /etc/init.d/yourapp restart重启服务。
StringBuilder代替字符串拼接)、复用通用资源(如数据库连接池)、避免自动装箱(如用int代替Integer),从根源降低内存消耗。