Я хочу проанализировать использование памяти кучи вне кучи.
Поэтому я использую gperftools и добавляю env к jetty.sh:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
# export HEAPPROFILE=/home/cccccc/perftools/mybin
Работает нормально
[root@xxx ~]# lsof -n | grep tcmalloc
java 23200 root mem REG 253,1 2350880 667001 /usr/local/lib/libtcmalloc.so.4.5.3
java 23200 23203 root mem REG 253,1 2350880 667001 /usr/local/lib/libtcmalloc.so.4.5.3
java 23200 23204 root mem REG 253,1 2350880 667001 /usr/local/lib/libtcmalloc.so.4.5.3
java 23200 23205 root mem REG 253,1 2350880 667001 /usr/local/lib/libtcmalloc.so.4.5.3
Но когда я закомментирую HEAPPROFILE
и попробую service jetty restart(start)
.
После регистрации
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Dumping heap profile to /home/cccccc/perftools/mybin.0001.heap (Exiting, 0 bytes in use)
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
Starting Jetty: Starting tracking the heap
Starting tracking the heap
Starting tracking the heap
ok Thu Sep 20 20:33:36 CST 2018
Он выходит.
И проверил журнал ошибок, я обнаружил, что это ошибка libunwind.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f882ad93dd4, pid=18147, tid=0x00007f882949a700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_122-b03) (build 1.8.0_122-ea-b03)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.122-b03 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libunwind.so.8+0x2dd4] access_mem+0x24
(полное содержание: https://drive.google.com/open?id=1JB3R27Udpdid3FMgnoWQPr516gZsSfc3)
слишком далеко от моей области видимости.
Я использую gperftools-2.7
с libunwind-1.2.1
(до того как я использовал * 1025)* тот же результат).
Это может быть очень трудно решить. Слишком много факторов окружающей среды.