https://stackoverflow.com/questions/6418089/does-jmap-force-garbage-collection-when-the-live-option-is-used
jmp / jstat 등이 JVM과 통신하는 구조
리눅스는 /tmp 하위에 파일 만든 뒤 시그널 날려주고 통신 시작.
윈도우는 NamedPipe 만들고 통신 시작
- JMap.java
https://github.com/openjdk/jdk/blob/6949dba/jdk/src/share/classes/sun/tools/jmap/JMap.java#L246
- HotSpotVirtualMachion.java → dumpHeap
https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java#L269
- HotSpotVirtualMachion.java → executeCommand
https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java#L304
- VirtualMachineImpl.java → execute
https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java#L142
- attachListener.cpp → attach_listener_thread_entry
https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/share/services/attachListener.cpp#L328
- attachListener_linux.cpp → AttachListener::is_init_trigger
https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/os/linux/attachListener_linux.cpp#L487
- os.cpp → signal_thread_entry → case SIGBREAK
https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/share/runtime/os.cpp#L319
jps 가 자바 프로세스를 찾는 방법
- Jps.java: https://github.com/openjdk/jdk/blob/131807a/src/jdk.jcmd/share/classes/sun/tools/jps/Jps.java
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java#L352
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java#L137
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java
- https://github.com/openjdk/jdk/tree/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java
- https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java