随着平台业务的不断发展,平台曲库数据的不断增加,系统偶尔出现内存溢出的情况。内存溢出相比其它异常而言,通常比较隐晦,一般是伴随着时间慢慢积累而产生的,因此不能仅根据异常产生处来简单定位问题,而要找到问题的根源。所以,有必要知道如何排查系统的内存溢出。
作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误或者内存泄漏。
当Java程序发生OOM时,可以通过以下命令检查程序运行情况:常用命令jstack:用于打印出Java进程中各个线程当前的调用栈信息,以及各个线程阻塞的原因等信息。可以通过jstack命令查看是否有线程阻塞、死循环等情况。
作者:fredalxin原文链接:https://fredal.xin/java-error-check线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。