在调整配置前,需确保Debian系统已安装Java Development Kit (JDK)。推荐使用OpenJDK(官方开源实现),通过APT包管理器安装:
sudo apt update && sudo apt install openjdk-11-jdk -y # 安装OpenJDK 11(可根据需求替换为17、8等版本)
安装完成后,验证Java版本:
java -version
输出应包含JDK版本信息(如openjdk version "11.0.xx"),确认安装成功。
环境变量是Java运行的基础,需设置JAVA_HOME(JDK安装路径)和PATH(Java命令搜索路径)。
编辑/etc/environment文件(需root权限):
sudo nano /etc/environment
在文件末尾添加以下内容(根据实际JDK路径调整,可通过sudo update-alternatives --config java查看路径):
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
PATH="$JAVA_HOME/bin:$PATH"
保存后,运行以下命令使配置生效:
source /etc/environment
编辑用户主目录下的.bashrc或.profile文件(如~/.bashrc):
nano ~/.bashrc
添加相同内容,保存后运行:
source ~/.bashrc
验证环境变量:
echo $JAVA_HOME # 应输出JDK路径
java -version # 应显示正确版本
JVM参数决定了Java应用的性能表现,常见参数及调整方法如下:
-Xms:初始堆内存大小(如-Xms2g,表示初始2GB);-Xmx:最大堆内存大小(如-Xmx4g,表示最大4GB)。-Xms和-Xmx设置为相同值,避免堆内存动态调整带来的性能损耗。-Xmn:新生代内存大小(如-Xmn1g,表示新生代1GB);-XX:NewRatio:新生代与老年代的比例(如-XX:NewRatio=2,表示新生代占1/3,老年代占2/3)。-XX:+UseG1GC:启用G1垃圾回收器(适合大多数应用,平衡吞吐量与延迟);-XX:+UseZGC:启用ZGC垃圾回收器(适合低延迟应用,如金融交易系统)。-Xss:每个线程的栈大小(如-Xss512k,表示512KB,减少内存占用)。根据应用启动方式选择对应配置途径:
通过环境变量配置(适用于脚本或命令行启动)
编辑/etc/environment或用户.bashrc文件,添加JAVA_OPTS变量:
JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
使配置生效:source /etc/environment,然后通过java $JAVA_OPTS -jar your_app.jar启动应用。
通过启动脚本配置(适用于自定义脚本)
编辑应用的启动脚本(如/etc/init.d/myapp或/usr/local/bin/myapp),在java命令前添加JAVA_OPTS:
java $JAVA_OPTS -jar /path/to/your_app.jar
保存后重启应用:sudo service myapp restart。
通过systemd服务配置(适用于systemd管理的服务)
编辑应用的systemd服务文件(如/etc/systemd/system/myapp.service),在[Service]部分添加Environment:
[Unit]
Description=My Java Application
[Service]
ExecStart=/usr/bin/java $JAVA_OPTS -jar /path/to/your_app.jar
Environment="JAVA_OPTS=-Xms2g -Xmx4g -XX:+UseG1GC"
[Install]
WantedBy=multi-user.target
保存后,重新加载systemd配置并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart myapp
启动Java应用后,可通过以下方式验证参数是否生效:
ps -ef | grep java
输出中应包含设置的JVM参数(如-Xms2g、-Xmx4g)。@PostConstruct方法),启动时打印参数:import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
@PostConstruct
public void printJvmArgs() {
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeMxBean.getVmArguments();
jvmArgs.forEach(System.out::println);
}
输出应包含配置的JVM参数。-Xss),内存密集型应用可增大堆内存(-Xms/-Xmx)。