启动jvm虚拟机时的“段错误”
今天,在部署U盘程序时,重启resin时,报错
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGBUS (0x7) at pc=0x00000034da87aa5b, pid=3236, tid=47594056421008
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_19-b02 mixed mode)
# Problematic frame:
# 段错误
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# SIGBUS (0x7) at pc=0x00000034da87aa5b, pid=3236, tid=47594056421008
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.5.0_19-b02 mixed mode)
# Problematic frame:
# 段错误
此时,无论直接运行java或用ant编译,都报以上错误
把所有的java进程都kill掉后,可以正常重启2个jvm,在启动第3个时,同样的错误又出现了
尝试更换成jdk5的其它版本,错误依旧
于是,决定用jdk6试试,如果不行,准备只好重启机器了...
没想到,在安装jdk6时,失败了,先提示/tmp空间不足,然后又报段错误
这时,才突然明白,可能是/tmp空间满了,导致无法运行java
把/tmp空间清理后,用以前的jdk可正常启动resin了
那么,启动java进程时,会向/tmp目录下写什么东西呢?
进去后,会发现有一个/tmp/hsperfdata_root目录
该目录下有一些文件,这些文件就是对应java进程的pid
而文件的内容似乎是启动java的命令,还有其它的一些log信息
看来java是利用该文件来记录启动时的一些log了
郁闷的问题,下午折腾了好久......