Tôi cần một cách để yêu cầu bãi chứa đống từ trong ứng dụng.Yêu cầu bãi chứa java heap (lõi dump) từ trong ứng dụng
Lý do: Khi tôi gặp phải một tình trạng lỗi cụ thể, tôi muốn đổ đống, để tôi có thể xem những gì đang giữ trên bộ nhớ.
Nhưng tôi muốn tự động hóa điều này (Ví dụ, khi tôi phát hiện thấy một số tình trạng cụ thể đã xảy ra. Hoặc khi một cơ quan giám sát không nhận được ping của nó nữa. Khi một số kiểm tra thất bại). Vì vậy, tôi cần một cách để đổ đống từ bên trong ứng dụng riêng của mình. Tôi dường như không thể tìm thấy nó với các công cụ đậu MX. Mặc dù MX Đậu có thể cung cấp cho dấu vết ngăn xếp rất tốt đẹp với màn hình và thông tin "đồng bộ hóa riêng", bế tắc và thông tin tranh chấp, tôi dường như không thể tìm thấy một cách để yêu cầu một bãi chứa đống. Có cách nào như vậy không? Hoặc bởi một số phương tiện gián tiếp, ví dụ như thế nào những điều JVisualVM làm điều đó? Và người ta có thể nói với JVM để đổ lõi vào OutOfMemoryExceptions ..?
Tuyệt vời, chỉ là những gì tôi đang tìm kiếm, Cảm ơn! Tôi thấy thật tuyệt vời khi tôi không tìm thấy bài đăng trên blog đó trong quá trình googling của tôi. Dưới sun.management, có vẻ rất nhiều niềm vui! – stolsvik
Một bình luận nữa, mặc dù (quay lại các ý tưởng được đăng trong OP): Từ liên kết "dump heap on OutOfMemoryError", tôi có thể đọc: "Dumper heap được xây dựng sẵn cũng có thể được sử dụng để chụp nhanh heap tại lần khác. Điều này được thực hiện bằng cách sử dụng tiện ích dòng lệnh jmap hoặc bảng điều khiển quản lý và giám sát jconsole. ". Những công cụ này sau đó có thể sử dụng MXBean độc quyền mà liên kết thứ hai đề cập đến? Tôi thấy lạ rằng các hạt tiêu chuẩn MX không có phương thức dumpHeap (fileName, live) này. – stolsvik
Phân loại phiền toái, vâng, nhưng tôi đoán đó là một chức năng tiêu chuẩn, định dạng kết xuất đống phải được chuẩn hóa. Ít nhất, tôi tưởng tượng rằng sẽ có rất nhiều công việc, và nó có thể có thể giới hạn các nhà cung cấp tự do có trong triển khai VM của họ. – gustafc