方式一
java -jar demo.jar
最基本的一种,启动后只要ctrl+c终止,服务就停了,这种基本不用
方式二
java -jar demo.jar &
方式一的升级版,&表示后台运行,区别在于这种方式启动的服务允许你ctrl+c,服务会在后台继续运行,但是这种是伪后台,当你关闭xshell窗口或者断开ssh连接后,服务立即停止
方式三
nohup java -jar demo.jar >/dev/null 2>&1 &
这种才是我们最常用的启动方式,即使你关闭ssh连接,服务也会继续运行,只有kill命令才能停止服务
关于>/dev/null 2>&1:
/dev/null表示丢弃信息,2>&1表示将标准错误输出重定向到标准输出,而标准输出又是不输出,所以加起来可以简单理解成不显示任何信息,应用后台运行即可
指定端口启动
java -jar demo.jar --server.port=8888
指定堆内存
初始内存:-Xms
最大内存:-Xmx
java -Xms128M -Xmx128M -jar demo.jar
开启自动生成dump文件
我们是不知道系统啥时候OOM的,你不可能时刻盯着,所以一般需要在发生OOM时自动生成dump文件,方便后期排查线上问题
XX:HeapDumpPath 指定你的dump文件保存路径和文件名
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof -jar demo.jar
(有一点,jvm在dump时,会停掉其它工作,所以如果你是线上,dump其实也算是个危险操作,还有,如果你的HeapDumpPath路径不存哎,是不会生成的,它不会帮你生成目录)
踩坑记录:
即使开启了oom时自动dump,在机器堆外内存不足的情况下,也可能不会自动dump,而且会把服务down掉,具体多少内存才够支撑dump还研究过 0.0