2012-03-05 31 views
5

Tôi muốn java của tôi thoát ra khi bắt OutOfMemoryError, tôi đang sử dụng -XX:+HeapDumpOnOutOfMemoryError để kết xuất tệp hprof.
Tôi không thể sử dụng kill -9 <pid> vì JVM cần phải đứng lên trong khi bán phá giá tệp hprof, có cách nào để dừng JVM sau khi tệp hprof được tạo không?

Để được rõ ràng tôi đang sử dụng phiên bản JVM của Sun 6.OutOfMemoryError - làm thế nào để tiêu diệt JVM sau khi hprof tạo

Trả lời

4

This page dường như ngụ ý rằng bạn có thể kết hợp -XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError="kill -9 %p"

Có lẽ, những đống đổ được tạo ra trước khi "Bật. .. "lệnh được chạy. (Nó sẽ dễ dàng để ném cùng nhau một cái gì đó để kiểm tra này.)

+1

Tôi kết hợp hai JVM args, giả định của bạn không hoàn toàn chính xác, tạo kết xuất đống song song với "On ..." lệnh, trong trường hợp của tôi giết chết xảy ra trước khi bãi rác được tạo ra hoàn toàn, cái chết của JVM ở giữa việc tạo ra kết xuất khiến cho 'hprof' bị hỏng. –

+0

OK, vì vậy trang Oracle gây hiểu nhầm. Nhưng bạn vẫn có thể làm việc với hành vi đó để có được hành vi mong muốn. –

+0

bạn bỏ lỡ dấu hai chấm trong '-XX: OnOutOfMemoryError' – mighq

Các vấn đề liên quan