jar包的几种启动方式

简介: 我们是不知道系统啥时候OOM的,你不可能时刻盯着,所以一般需要在发生OOM时自动生成dump文件,方便后期排查线上问题

方式一

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


相关文章
|
1月前
|
Java Docker 容器
|
1天前
|
Java Go Maven
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录(二)
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
10 0
|
1天前
|
Java Maven
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录(一)
向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录
15 0
|
3天前
|
前端开发 Java Linux
宝塔Linux:部署His医疗项目通过jar包的方式
宝塔Linux:部署His医疗项目通过jar包的方式
|
9天前
|
Java
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
如何解决使用若依前后端分离打包部署到服务器上后主包无法找到从包中的文件的问题?如何在 Java 代码中访问 jar 包中的资源文件?
46 0
|
11天前
|
Java Maven
springboot jar包启动提示没有主清单属性
springboot jar包启动提示没有主清单属性
|
12天前
|
分布式计算 DataWorks Java
DataWorks产品使用合集之阿里云DataWorks专有云环境下,上传MaxCompute的UDF(用户自定义函数)的JAR包的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
21 0
|
22天前
|
Java
JSTL jar包版本错误attribute items does not accept any expressions
确保你在 `items` 属性中使用了一个实际的集合或数组变量,而不是表达式,以解决这个问题。
12 0
|
1月前
|
Java Android开发
读取jar包内外文件
读取jar包内外文件