解决java问题

7 篇文章 0 订阅

解决java问题

1、升级java版本:第1步,使用java最新版本,避免把时间浪费在java已经修复的问题上。经常会有一些java运行时出现的BUG,在最新的版本中被修复。

2、设置jvm选项,收集相关数据来解决问题:

1)开启core文件:如果java崩溃,例如因为一个段错误(segmentation fault),OS会保存一个core文件,在linux中,core文件通常默认是关闭的。在启动应用前开启core文件,开启core文件的方法是在命令行执行ulimit -c unlimited。

    注意:core文件会占用很大一部分磁盘空间,特别是在java堆很大的情况下。

    很多时候,java崩溃是很难重现的,因此,要在启动应用前开启core文件夹。(For more details about Serviceability Agent's HSDB and CLHSDB tools, read the article from Java Magazine.)

2)增加jvm参数-XX:+HeapDumpOnOutOfMemoryError,用jhat工具找出堆中占用了较大的空间,并且不再被使用(或不可达),但仍然存活的对象。

    像core文件一样,堆转存文件也会很大,在java堆很大的情况下。

3)在jvm命令行增加-verbosegc:-verbosegc记录GC的基本信息到日志中。这份日志会帮助你找出以下问题:

  • GC是否运行很长时间?
  • 空闲内存是不是会逐渐减少?
GC日志可以在抛出OutOfMemoryError异常或出现性能问题帮助诊断问题;因此,默认开启-verbosegc选项帮助你排除问题。
注意:用日志循环,这样在应用重启时不会删掉以前的日志文件。从jdk7开始,UseGClogFileRotation和NumberOfGCLogFiles可以用来设置循环日志。见Debugging Options for Java HotSpot VM
4)打印java版本和jvm选项:在提出bug或到论坛上寻求帮助之前,手边要有基本信息的日志文件。在jvm参数中增加-XX:+PrintCommandLineFlags和-showversion。
5)设置JMC JMX来进行远程监控:JMX可以被用来连接远程应用上,用像Mission Control或Visual VM这样的工具。见How to monitor JVM using JMX Technology

3、在你的应用出现问题时,你想进一步调试,确保在重启之前收集了相关信息,特别是重启会删除以前的文件的情况下。
下面是需要收集的重要文件:
  • 崩溃时的core文件;
  • hr_err打印的java崩溃时的文本文件;
  • 日志文件:java或是应用产生的日志;
  • 通过-XX:+HeapDumpOnOutOfMemoryError转存的文件;
  • Stack traces: Take several stack traces using jcmd <pid> Thread.print before restarting the system.
  • 强制生成一个core文件:如果应该不能关闭,可以通过在命令行执行kill -6 <pid>产生core文件。

4、要想使java应用易于调试,使用一个日志框架是一个好的途径,见Java Logging Technology


引用:http://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/prepapp001.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值