Tôi muốn tìm hiểu kích thước heap tổng được sử dụng tại một thời điểm nhất định bởi một quá trình Java và tôi phải sử dụng jmap.Tìm kích thước heap hiện tại với jmap
Kết quả của jmap -heap <pid>
mang lại cho tôi một cái gì đó như thế này:
Attaching to process ID 2899, please wait... Debugger attached successfully. Server compiler detected. JVM version is 14.2-b01 using thread-local object allocation. Parallel GC with 2 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 1258291200 (1200.0MB) NewSize = 1048576 (1.0MB) MaxNewSize = 4294901760 (4095.9375MB) OldSize = 4194304 (4.0MB) NewRatio = 8 SurvivorRatio = 8 PermSize = 16777216 (16.0MB) MaxPermSize = 67108864 (64.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 119013376 (113.5MB) used = 117277608 (111.84464263916016MB) free = 1735768 (1.6553573608398438MB) 98.54153536489882% used From Space: capacity = 131072 (0.125MB) used = 81920 (0.078125MB) free = 49152 (0.046875MB) 62.5% used To Space: capacity = 131072 (0.125MB) used = 0 (0.0MB) free = 131072 (0.125MB) 0.0% used PS Old Generation capacity = 954466304 (910.25MB) used = 80791792 (77.04905700683594MB) free = 873674512 (833.2009429931641MB) 8.46460390077846% used PS Perm Generation capacity = 57671680 (55.0MB) used = 41699008 (39.76727294921875MB) free = 15972672 (15.23272705078125MB) 72.30413263494319% used
Tôi có thể sử dụng một công thức cho những giá trị này để tìm hiểu tổng bộ nhớ được sử dụng?
Các đề xuất khác về cách tôi có thể tìm thấy điều này trên Linux được chào đón nhưng jmap được ưu tiên hơn chúng.
Cảm ơn
Chạy 'jmap -heap: format = b' và phân tích cú pháp tệp kết xuất đống với Công cụ phân tích bộ nhớ từ Eclipse cung cấp cho tôi tổng mức sử dụng 22Mb. Tôi không thể tìm cách thu được tổng giá trị tương tự ... –
fmoga
@MelmanRo: Tôi đoán là công cụ nhật thực đã xóa tất cả các đối tượng không thể truy cập (tức là rác được thu thập) từ phép tính, đây là một phép tính những gì kích thước heap * sẽ * được nếu một quét GC đầy đủ đã được chạy. Tôi duy trì rằng việc sử dụng bộ nhớ hệ điều hành * thực tế * hiện tại là tổng số các nhóm khác nhau như tôi đã mô tả. – skaffman
Đây có phải là nguồn gốc của sự khác biệt lớn như vậy không? – fmoga