Docker 自1.10版本开始加入的安全特性。类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是Docker自1.10在默认的seccomp配置文件中禁用了ptrace
解决方案 
如果使用docker-compose启动容器,如下加入 cap_add即可
[root@localhost etl]# cat docker-compose.yml 
version: '2'
services:
 powerEtl:
  image: power-etl:1.0
  network_mode: "host"
  volumes:
         - /root/etl/:/root/etl/
  cap_add:
         - SYS_PTRACE

打印Java堆概要信息,包括使用的GC算法、堆配置参数和各代中堆内存使用情况

1:jmap -heap pid(下面例子中的pid是1)

[root@localhost /]# docker exec -it 2cf384 /bin/sh
/ # jps
1 jar
102 Jps
/ # jmap -heap 1
Attaching to process ID 1, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration: //堆内存初始化配置
   MinHeapFreeRatio         = 0 //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
   MaxHeapFreeRatio         = 100 //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
   MaxHeapSize              = 2051014656 (1956.0MB) //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
   NewSize                  = 42991616 (41.0MB) //对应jvm启动参数-XX:NewSize=设置JVM堆的‘新生代’的默认大小
   MaxNewSize               = 683671552 (652.0MB) //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
   OldSize                  = 87031808 (83.0MB) //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的‘老生代’的大小
   NewRatio                 = 2 //对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
   SurvivorRatio            = 8 //对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage: //堆内存使用情况
PS Young Generation
Eden Space:
   capacity = 325058560 (310.0MB) //Eden区总容量
   used     = 241188112 (230.01490783691406MB) //Eden区已使用
   free     = 83870448 (79.98509216308594MB) //Eden区剩余容量
   74.19835736674648% used //Eden区使用比率
From Space: //其中一个Survivor区的内存分布
   capacity = 9437184 (9.0MB)
   used     = 7042944 (6.7166748046875MB)
   free     = 2394240 (2.2833251953125MB)
   74.62972005208333% used
To Space: //另一个Survivor区的内存分布
   capacity = 9961472 (9.5MB)
   used     = 0 (0.0MB)
   free     = 9961472 (9.5MB)
   0.0% used
PS Old Generation //当前的Old区内存分布
   capacity = 62390272 (59.5MB)
   used     = 14477120 (13.80645751953125MB)
   free     = 47913152 (45.69354248046875MB)
   23.20413028492647% used

21711 interned Strings occupying 2094576 bytes.
View Code

相关文章:

  • 2021-08-27
  • 2022-12-23
  • 2021-11-23
  • 2021-05-26
  • 2021-07-01
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-24
  • 2022-02-23
  • 2021-06-06
  • 2022-12-23
  • 2022-01-08
相关资源
相似解决方案