java 启动jar包JVM参数

/opt/java/jdk1.8.0_131/bin/java 

#运行模式
-server 														

#堆区内存可被分配的最大上限 
-Xmx512m  				

#堆区内存初始内存分配的大小 
-Xms512m  														

#新生代(Eden + 2*S)与老年代(不包括永久区)的比值
-XX:NewRatio=4 								

#Eden区和Survivor区的比值
-XX:SurvivorRatio=8 											

#持久代空间大小
-XX:PermSize=48m

#持久代空间大小
-XX:MaxPermSize=64m 											

#每个线程的堆栈大小
-Xss256k		

#JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右
一般小的应用, 如果栈不是很深, 应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。(校长)
和threadstacksize选项解释很类似,官方文档似乎没有解释,在论坛中有这样一句话:"”
-Xss is translated in a VM flag named ThreadStackSize”
一般设置这个值就可以了
-XX:ThreadStackSize=128k 										

-XX:-ReduceInitialCardMarks 

#垃圾回收统计信息
-XX:+PrintGCDetails  											

#垃圾回收统计信息
-XX:+PrintGCTimeStamps 		

#垃圾回收统计信息
-XX:+PrintHeapAtGC 

-Xloggc:/home/workspace/jvm-log/open-api-global-quartz-GC.log 

#关闭System.gc() 这个参数需要严格的测试
-XX:+DisableExplicitGC											

#使用CMS内存收集
-XX:+UseConcMarkSweepGC 

-XX:+CMSClassUnloadingEnabled 

#CMS并发过程运行时的线程数
-XX:ParallelCMSThreads=4 

#CMS降低标记停顿
-XX:+CMSParallelRemarkEnabled 									

#在FULL GC的时候, 对年老代的压缩 CMS是不会移动内存的, 因此, 这个非常容易产生碎片, 导致内存不够用, 因此, 内存的压缩这个时候就会被启用。 增加这个参数是个好习惯。
可能会影响性能,但是可以消除碎片
-XX:+UseCMSCompactAtFullCollection 								

#CMS作为垃圾回收使用50%后开始CMS收集
-XX:CMSInitiatingOccupancyFraction=50 							

#CMS并发收集器不对内存空间进行压缩,整理,所以运行一段时间以后会产生"碎片",使得运行效率降低.此值设置运行多少次GC以后对内存空间进行压缩,整理.
-XX:CMSFullGCsBeforeCompaction=2 								

#这个可以压缩指针,起到节约内存占用的新参数
-XX:+UseCompressedOops 

#当堆内存空间溢出时输出堆的内存快照
-XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath=/home/workspace/jvm_dump/open-api-global-quartz-heapDump.hprof 

-jar open-api-global-quartz-exec.jar 

--eureka.server=http://localhost:8761/eureka 
--environment=Staging --dataCenter=Cloud
### 配置JAR运行时的JVM参数 为了配置由Maven构建的可执行JAR文件在启动时使用的Java虚拟机(JVM)参数,可以采用多种方法来实现这一目标。 #### 方法一:命令行指定JVM参数 最直接的方法是在通过`java -jar`命令启动应用的时候,在命令行上直接提供所需的JVM选项。例如: ```bash java -Xms512m -Xmx1024m -Dproperty=value -jar myapp.jar ``` 这条命令设置了初始堆大小(-Xms),最大堆大小(-Xmx),并定义了一个系统属性(-D)[^1]。 #### 方法二:使用Manifest文件中的Main-Class和Start-Class指令 如果希望更永久地设定这些参数而不必每次都手动输入,则可以在项目的`pom.xml`中配置插件以将必要的JVM参数写入生成的JAR文件内的清单(Manifest)文件里。具体来说,可以通过设置`spring-boot-maven-plugin`或其他适用的打插件的相关字段完成此操作。 然而需要注意的是,不是所有的JVM参数都可以放入manifest中;通常只适用于那些能够作为程序参数传递给main()函数的形式,比如-D定义的系统属性。 #### 方法三:创建Shell脚本或批处理文件封装启动逻辑 对于复杂的场景或者需要频繁调整的情况,建议编写shell脚本来管理整个过程。这种方式不仅可以让开发者更容易维护不同环境下的配置差异,还可以简化部署流程。下面是一个简单的Linux shell script例子: ```bash #!/bin/bash NOHUP_OUT="myapp.out" LOG_FILE="myapp.log" nohup java \ -Dlogging.config=logback-spring.xml \ -jar /path/to/myapp.jar >> $NOHUP_OUT 2>&1 & echo "Started application with PID=$!" ``` 上述脚本除了基本的内存分配外还指定了垃圾收集器类型以及日志配置路径,并且利用了`nohup`命令使得进程能够在终端关闭后继续运行,同时重定向标准输出至特定的日志文件[^3]。 #### 查看当前正在使用的JVM参数 要检查已经运行的应用所使用的实际JVM参数,可以根据操作系统采取不同的方式获取PID之后再进一步查询详情。对于大多数类Unix平台而言,可以先找到对应的进程ID(PID), 然后使用如下命令查看其详细的启动信息: ```bash ps -ef | grep java # 寻找含'java'关键字的过程记录 jcmd <pid> VM.flags # 使用Oracle JDK自带工具 jcmd 来显示具体的标志位 ``` 而对于Windows用户则可能需要用到任务管理器(Task Manager)或者其他第三方软件来进行类似的诊断工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值