pmap -x $(pidof java|head -n 1) |awk '{print ($3, $0)}' |grep anon  |sort -nr |grep -v '^0' |head
	
	
	容器内存信息(老版本会把缓存也计算为容器使用(但oom前会回收))
	head /sys/fs/cgroup/memory/memory.stat
	head /sys/fs/cgroup/memory/*
	cat /proc/1/status
	
	
	
	直接内存追踪:
	-XX:NativeMemoryTracking=[off | summary | detail]
	jcmd $(pidof java)  VM.native_memory summary scale=MB >native_memory$(date -Is).txt
	可用jcmd关闭  jcmd $(pidof java)  VM.native_memory shutdown(不能动态打开)
	jvm主要内存占用
	heap Xmx
	g1 gc极端可能占用20%内存, 观察到 24g heap占用1g堆外
	meta 100多
	线程 每个线程1MB stack
	direct buffer(internal?) 可jmx看,网络应用可能有几百MB
	code(JIT)  100来MB
	
	glibc的malloc如果最后申请的少量内存没有释放,可能影响之前free的内存归还操作系统
	glibc内存分析.pdf(glibc内存管理ptmalloc源代码分析)
	
	
	https://www.alibabacloud.com/blog/a-detailed-explanation-of-jvm-garbage-collector-g1%26zgc_601536
	https://www.cnblogs.com/z00377750/p/14470883.html
	https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html
	https://docs.oracle.com/javase/8/docs/technotes/guides/vm/nmt-8.html
	
	
	
	#有bug? 使用 https://stackoverflow.com/questions/21483984/python-read-linux-memory-process-error-proc-pid-mem?
	ps -ef |grep $1
echo pid is $1
echo continue?
read
line=$(pmap -x $1 | grep $2)
echo matched line is $line
read a b <<< $(echo $line| awk '{print $1, $2}' )
#offet size in hex
echo $a $b
pgsize=$( getconf PAGESIZE )
bcount=$(( $b * 1024  ))
echo $a $b $pgsize enter to continue
read
dd if=/proc/$1/mem bs=$pgsize iflag=skip_bytes,count_bytes skip=$(( 0x$a )) count=$bcount of="$1_mem_$a.bin"