深入理解JVM
堆整体分为Heap(堆区)和方法区
Heap包含新生代、老生代
方法区包含永久代存放常量池,静态变量,方法字节码等运行时常驻数据(JDK8及之前的HotSpotJVM中)
命令
java -jar
java -Dxxx=test -DprocessType=1 -jar xxx.jar
注意参数放在-jar参数前面
取值:System.getProperty(“propName”)java -jar xxx.jar processType=1 processType2=2
参数就是jar包里主启动类中main方法的args参数java -jar xxx.jar –key=test
spring的@value(“${xxx}”)java -jar test.jar &
后台运行进程nohup java -jar demo.jar &
nohup是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行nohup java -jar demo.jar >1.txt &
增加了>1.txt ,将nohup java -jar demo.jar的运行内容重定向输出到1.txt文件中,即输出内容不打印到当前窗口上,而是输出到1.txt文件中nohup java -jar demo.jar >/dev/null 2>&1 &
‘>’ 代表重定向到哪里,例如:echo “123” > /home/123.txt
/dev/null 代表空设备文件
2> 表示stderr标准错误
1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于 “1>/dev/null”
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1
0 标准输入(一般是键盘)
1 标准输出(一般是显示屏,是用户终端控制台)
2 标准错误(错误信息输出)
/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。一般项目中定义中输出运行日志到指定地址,这样的话,就不需要再单独输出nohup.out文件,这种情况可以考虑使用这种。
新建start.sh脚本,内容:nohup java -Xms515m -Xmx1024m -jar -Dfile.encoding=UTF-8 demo.jar –spring.profiles.active=prod >/dev/null 2>&1 &
- nohup java -Xms515m -Xmx1024m -jar -Dfile.encoding=UTF-8 demo.jar –spring.profiles.active=prod >/dev/null 2>&1 &
-Xms 指定jvm运行最小运行堆内存,默认为物理内存1/64,用法 :-Xmx512m 注意:Xmx和512m中间不用添加空格
-Xmx 指定jvm运行最大运行堆内存,默认物理内存1/4,用法: -Xmx1024m 注意:Xmx和1024m中间不用添加空格
–server.port 指定jar运行的port端口,用法:–server.port=8085
–spring.profiles.active=pro 指定运行的配置文件、环境,用法:–spring.profiles.active=prod
jmap
jmap -heap PID 查看堆信息