Java HotSpot(TM) 64-Bit Server VM warning:

Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:
   /tmp/hsperfdata_ol-mobile/17506
Try using the -Djava.io.tmpdir= option to select an alternate temp location. html

这种异常可引发客户端链接异常,由于会形成服务不可用,注意这个异常,有多是由于服务器端的日志文件占用的内存太多了引发JVM没有空间在/tmp下面创建JVM的pid文件 java

能够经过写定时任务按期删除部分log:linux 定时任务参考 http://blog.chinaunix.net/uid-7552018-id-182133.html linux

搜索得知这是JVM抛出的错误
大意是没有空间在/tmp下面创建JVM的pid文件
解决方式一是取消该文件的自动建立(使用的命令参数参考这个连接http://stackoverflow.com/questions/76327/how-can-i-prevent-java-from-creating-hsperfdata-files (Try JVM option -XX:-UsePerfData)),或者修改一个建立目录,可是磁盘空间依然是满的,没有处理,那么就用第二种方法,找出致满的磁盘。
df发现某一个满的分区
而后du -sh /xxx 计算这个目录的总占用量 而后层层往下 找出占用较大空间的文件 通常是/var目录占用较多空间,由于下面有日志 /var/log ,若是开机时间太久,kernel日志极可能占很大的空间致使此分区满。 服务器

错误解决后,搜索学习这个 /tmp/hsperfdata_$user/$number的做用:
That directory is part of a Java performance counter. jvm

这个文件存的应该是JVM进程当前的一些性能参数(或者说运行信息) 工具

 
jvmstat会生成一个目录文件叫hsperfdata_username,那这个目录文件在哪里呢,默认的是生成在 java.io.tmpdir目录下, java.io.tmpdir在linux下默认是/tmp下,故默认开启了jvm monitor的功能之后就会在/tmp目录下生成一个目录叫 hsperfdata_username ,而后这个目录中会有一个pid文件,能够利用strings查看里面的文件内容,通常就是jvm的进程信息而已。 性能

而jps、jconsole、jvisualvm等工具的数据来源就是这个文件(/tmp/hsperfdata_userName/pid)。因此当该文件不存在或是没法读取时就会出现jps没法查看该进程号,jconsole没法监控等问题 学习


/tmp/hsperfdata_userName/pid文件会在对应java进程退出后被清除。若是java进程非正常退出(如kill -9),那么pid文件会被保留,直到执行一次java命令或是加载了jvm程序的命令(如jps、javac、jstat),会将全部无用的pid文件都清除掉 ui

相关文章
相关标签/搜索