引言: 在JVM的实际应用中,一般无法通过图形化的界面来进行JVM的观察和问题确定,一般都需要通过命令来进行,这里碰到的问题是无法连接上java进程....
1. 问题的提出
JDK 1.7, Java Web应用
2. 问题的提出
在尝试使用jmap进行探查的过程中,执行如下命令:
>> jmap 8765 [8765是我们通常使用的java应用进程号】
[xxx@xxx ~]$ jmap -heap 9683 Attaching to process ID 9683, please wait... Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process3. 问题分析正常来说,服务器上是使用标准的JDK基础包,无特殊设置,jmap是JVM自带的命令,无法连接上process,因为什么原因?
正常来说,肯定是可以的。
Java进程肯定存在的,没有消失。
难道是OS的权限屏蔽, 忽然意识到,我当前使用的是普通用户,而这个java进程是由root用户来启动的。
4. 问题解决
>> sudo su -
切换到root用户,重新执行jmap pid, 即可正常访问命令输出的内容了。
[xxxx@xxxx ~]# jmap heap 9683 Attaching to core 9683 from executable heap, please wait... Error attaching to core file: Can't attach to the core file [root@gyl-test-t5 ~]# jmap -heap 9683 Attaching to process ID 9683, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.71-b01 using thread-local object allocation. Parallel GC with 23 thread(s) Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 1258291200 (1200.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 268435456 (256.0MB) MaxPermSize = 536870912 (512.0MB) G1HeapRegionSize = 0 (0.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 310378496 (296.0MB) used = 258040456 (246.08655548095703MB) free = 52338040 (49.91344451904297MB) 83.13734982464764% used From Space: capacity = 45613056 (43.5MB) used = 26470024 (25.24378204345703MB) free = 19143032 (18.25621795654297MB) 58.03168285852191% used To Space: capacity = 46137344 (44.0MB) used = 0 (0.0MB) free = 46137344 (44.0MB) 0.0% used PS Old Generation capacity = 320339968 (305.5MB) used = 259420512 (247.40267944335938MB) free = 60919456 (58.097320556640625MB) 80.98287379488032% used PS Perm Generation capacity = 268435456 (256.0MB) used = 96727704 (92.2467269897461MB) free = 171707752 (163.7532730102539MB) 36.03387773036957% used