因为临时文件夹权限问题导致visual vm无法检视本地java程序故障解决一则

自从我知道了visual vm这个很好的监控java程序,进行Profile分析的工具以来,它始终没在我的操作系统上成功的运行起来。每次启动都会提示无法监听到本地的java进程。

根据提示的信息,我辗转阅读了若干sun官方论坛上的帖子。上面说了有可能是权限问题导致%tmp%\hsperfdata__username_ 这个文件夹无法创建造成此问题,也有可能是因为FAT系统下jvm的某个bug导致。

我首先检查了我的%tmp%目录权限,只读的。改成可写,并手工建立hsperfdata_xxx 目录,还是不行。后来关闭了vista的UAC,还是不行。

今天,我开始怀疑到RamDisk上。因为我把我系统的%tmp%、%temp%都移到了RamDisk上,会不会是RamDisk disk本身的权限限制,导致了hsperfdata_xxx 未能成功创建?(至少是jvm无法成功创建)。于是我把tmp、temp又移回了C:,ok,visual vm可以监听本地的程序了,以后调试程序可以放弃jconsole了。

后记:

RamDisk看来是个双刃剑,一方面可以减少垃圾文件对于系统速度的影响,另一方面由于安全等原因,可能会比本地硬盘多一些限制。对于开发人员来说,应该尽量谨慎的使用。现在我只把浏览器缓存丢进去了。当然,虽然浏览器速度有提升,不过本地缓存的东西随着关机都消失了,再次启动电脑后浏览网页失去了缓存的优势,也是有得有失的。

加载评论框需要翻墙