我有一个小应用程序,分配大约25000个线程,然后释放它们.当线程被释放时,即使在所有线程退出之后,应用程序的内存消耗也会上升并保持高水平.
top看起来像这样:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9133 root 20 0 22.601g 8.612g 12080 S 0.0 9.1 1:18.61 java
Run Code Online (Sandbox Code Playgroud)
而jmap -heap看起来像这样:
Attaching to process ID 9133, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.66-b17
using thread-local object allocation.
Parallel GC with 18 thread(s)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 104857600 (100.0MB)
MaxNewSize = 104857600 (100.0MB)
OldSize = 968884224 …Run Code Online (Sandbox Code Playgroud)