Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在linux中获取当前进程的JVM缓存位置_Java_Linux_Caching_Process - Fatal编程技术网

Java 如何在linux中获取当前进程的JVM缓存位置

Java 如何在linux中获取当前进程的JVM缓存位置,java,linux,caching,process,Java,Linux,Caching,Process,我们知道,每个JVM进程将创建一个缓存目录。例如: /root/.java/deployment/cache/6.0/35 2df4eba3-16182299 2df4eba3-16182299-n 2df4eba3-4678facc.idx 2df4eba3-16182299.idx 2df4eba3-1a176e8d.idx 2df4eba3-654177dc.idx 2df4eba3-16182299-n是缓存位置 如果我想在java代码中得到这个位置,如何做到这一

我们知道,每个JVM进程将创建一个缓存目录。例如:

/root/.java/deployment/cache/6.0/35

2df4eba3-16182299      2df4eba3-16182299-n    2df4eba3-4678facc.idx
2df4eba3-16182299.idx  2df4eba3-1a176e8d.idx  2df4eba3-654177dc.idx
2df4eba3-16182299-n是缓存位置


如果我想在java代码中得到这个位置,如何做到这一点?

在java中,我不相信你能做到,除非你使用的是启发式;你甚至不能直接得到你的PID。如果可以的话,您可以走
/proc/yourpid/fd
,然后再次使用启发式。但有一件事:根?除非绝对需要,否则不要以root用户身份运行!如果我使用JNI,我可以得到pid,但我只是通过使用readlink(“/proc/self/exe”,buf,sizeof(buf))获得java bin位置;如何使用/proc/yourpid/fd?嗯,是的,我忘记了/proc/self:p不需要PID,那么。。。至于/fd,只需阅读描述符列表;它只是一个“常规”目录,我认为/proc/self/fd无法获取缓存位置。我编写了一个JNI示例,c代码如下:'intfd;文件*fp;字符路径[1024];char-buf[1024];fp=fopen(“温度”、“a+”);fd=文件号(fp);sprintf(buf,“/proc/%ld/fd/%d”,getpid(),fd);国际关系;res=readlink(buf,path,sizeof(path));'我在编写示例时有一个问题,如何获取fd?您看过/proc/*/fd的内容了吗?这是一个符号链接列表;您必须读取符号链接目标并对其进行分析。