JVM调优小结

一、JVM参数

  • -Xms,是指程序启动是占用的内存大小,初始分配堆内存,一般来说可以相对大些,启动会快点
  • -Xmx,是指程序运行期间最大可用的内存大小,按需分配,如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常
  • -Xss,是指每个线程的堆栈大小(太小的话可能发生栈溢出,没个java方法在执行都会创建栈帧)
  • -XX:PermSize,初始分配的非堆内存
  • -XX:MaxPermSize,最大分配的非堆内存,即持久代空间

二、jvm调优工具

  • 一、jps:虚拟机进程状况工具
  • 二、jstat:虚拟机统计信息监视工具
  • 三、jmap:Java内存印象工具
  • 四、jhat:虚拟机堆转储快照分析工具
  • 五、jstack:Java堆栈跟踪工具
  • 六、jinfo:Java配置信息工具

三、常见问题

1)用jmap分析堆内存使用情况
  1. 内存溢出问题,可以用jmap下一个dump包(jmap -dump:file=fileName Pid),然后用jvisualvm工具来打开,分析对应实例创建情况(可以通过不同时期的dump包进行对比来观察差异)
2)用Jconsole观察jvm整体情况(包括堆外内存使用情况)

通常我们都需要再window机器上远程到linux服务端来看jvm情况,因为linux不支持图形化界面。配置步骤如下:

  1. java应用程序启动的时候加上以下参数:
    -Djava.rmi.server.hostname=127.0.0.1
    -Dcom.sun.management.jmxremote.port=1000
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false

  2. 修改jmxremote.access和jmxremote.password.template
    vi jmxremote.access,添加两个用户,如下:

#monitorRole   readonly
lisssss   readonly
#controlRole   readwrite \
admin   readwrite \
              create javax.management.monitor.*,javax.management.timer.* \
              unregister

mv jmxremote.password.template jmxremote.password #重命名

chmod +w jmxremote.password #增加写权限

vim jmxremote.password 为只读用户和读写用户设置密码,如下:

# monitorRole  QED
lisssss 1234xx
# controlRole   R&D
admin 1234xx
  1. 打开本地Jconsole,远程连接即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值