出现这个问题说明堆内容已经满了,这个问题的定位可能比较麻烦,不过一般从几方面定位
查看是否tomcat 启动时设置的堆内存大小是否太小,如果太小就设置大些,如果设置大了,就好了,那可能是这个原因。
2.还有这个可能是你程序问题,用spring 本身可能会占用一些内存,但当你写的代码不能释放堆内存后就会出现该问题。
多数人可能会回答 kill -9 pid,这是一种在多数情况下正确的做法。不过本文打算阐述使用kill -9带来的一些问题,并给出另一种标准的kill方式。在Linux信号机制中,存在多种进程中断信号(Linux信号列表 )。其中比较典型的有 SIGNKILL(9) 和 SIGNTERM(15).
SIGNKILL(9) 和 SIGNTERM(15) 的区别在于:
SIGNKILL(9) 的效果是立即杀死进程. 该信号不能被阻塞, 处理和忽略。
SIGNTERM(15) 的效果是正常退出进程,退出前可以被阻塞或回调处理。并且它是Linux缺省的程序中断信号。
由此可见,SIGNTERM(15) 才是理论上标准的kill进程信号。
SIGNKILL(9) 带来的问题
先看一段程序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)