Linux 运行jar包命令如下:
方式一:
java -jar XXX.jar
特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出
那如何让窗口不锁定?
方式二
java -jar XXX.jar &
&代表在后台运行。
特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。
继续改进,如何让窗口关闭时,程序仍然运行?
方式三
nohup java -jar XXX.jar &
nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。
方式四
如果想要查看控制台输出则可以
nohub java -jar XXX.jar & tail -f nohub.out
方式五
如果想要添加虚拟机相关参数则可以
nohup java -jar XXX.jar “-Dname=XXX.jar -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC” & tail -f nohup.out
其中
Xms : JVM初始分配的堆内存及最小分配内存空间
Xmx: JVM最大允许bai分配的堆内存,按需分配
堆内存分配:
JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;
JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try…catch捕捉。
-Dname=XXX.jar -Duser.timezone=Asia/Shanghai 设置XXX.jar 的时间区
-XX:PermSize:表示非堆区初始内存分配大小,其缩写为permanent size(持久化内存)
-XX:MaxPermSize:表示对非堆区分配的内存的最大上限
-XX:+HeapDumpOnOutOfMemoryError 参数表示当JVM发生OOM时,自动生成DUMP文件
-XX:+PrintGCDateStamps 记录的是jvm启动时间为起点的相对时间
-XX:+PrintGCDetails 打印GC详细信息
-XX:NewRatio 表示新生代和老年代比值
-XX:SurvivorRatio 表示两个survivor和eden的比值 30表示survivor:eden=1:30 默认1:8
-XX:+UseParallelGC
-XX:+UseParallelOldGC