天天看点

jar包的几种启动方式

方式一

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