https://stackoverflow.com/questions/6418089/does-jmap-force-garbage-collection-when-the-live-option-is-used

jmp / jstat 등이 JVM과 통신하는 구조

리눅스는 /tmp 하위에 파일 만든 뒤 시그널 날려주고 통신 시작.

윈도우는 NamedPipe 만들고 통신 시작

  1. JMap.java https://github.com/openjdk/jdk/blob/6949dba/jdk/src/share/classes/sun/tools/jmap/JMap.java#L246
  2. HotSpotVirtualMachion.java → dumpHeap https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java#L269
  3. HotSpotVirtualMachion.java → executeCommand https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/share/classes/sun/tools/attach/HotSpotVirtualMachine.java#L304
  4. VirtualMachineImpl.java → execute https://github.com/openjdk/jdk/blob/28019d4/src/jdk.attach/linux/classes/sun/tools/attach/VirtualMachineImpl.java#L142
  5. attachListener.cpp → attach_listener_thread_entry https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/share/services/attachListener.cpp#L328
  6. attachListener_linux.cpp → AttachListener::is_init_trigger https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/os/linux/attachListener_linux.cpp#L487
  7. os.cpp → signal_thread_entry → case SIGBREAK https://github.com/openjdk/jdk/blob/28019d4/src/hotspot/share/runtime/os.cpp#L319

jps 가 자바 프로세스를 찾는 방법

  1. Jps.java: https://github.com/openjdk/jdk/blob/131807a/src/jdk.jcmd/share/classes/sun/tools/jps/Jps.java
  2. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java#L352
  3. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/monitor/MonitoredHost.java#L137
  4. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostLocalService.java
  5. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/MonitoredHostProvider.java
  6. https://github.com/openjdk/jdk/tree/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local
  7. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/LocalVmManager.java
  8. https://github.com/openjdk/jdk/blob/131807a/src/jdk.internal.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/protocol/local/PerfDataFile.java