Tôi có một số quy trình Java và tôi đang cố quản lý các vùng đống được tạo khi xảy ra lỗi OOM. Khi tôi nói quản lý tôi muốn nóiJava Hết bộ nhớ tên tệp kết xuất đống tự động
- tên đống đổ cách khác nhau, dựa trên quá trình có nguồn gốc
- xóa cũ đống bãi để bảo tồn không gian đĩa
khi đổ đống trên oom với
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
JVM tạo tệp có tên sau java_pidXXXX.hprof trong thư mục được chỉ định/tmp (trong đó XXXX là PID của quy trình). Có cách nào để chỉ định một định dạng khác mà PID và DATE được sử dụng để tạo tên tệp không? Sau khi googling trong một giờ, tôi đã thử myPrefix_ $, {pid}, 'date' .. v.v. Hai điều duy nhất rằng công việc là
- không chỉ định tên tập tin và bạn sẽ có được java_pidXXXX.hprof
- chỉ định một tên tập tin tĩnh ví dụ \ tmp \ OOM.hprof.
nếu thư mục \ tmp không tồn tại, thư mục đó không được tạo, cũng không tạo vùng chứa.
Một ý kiến cho rằng có thể sử dụng là thêm một lệnh về lỗi oom
-XX:OnOutOfMemoryError="doSomething.sh %p"
nhưng tôi đã cố gắng để tránh nó như tôi cần phải triển khai "doSomething.sh"
Tại sao bạn cần ngày trong tên? Nếu bạn muốn xóa các tập tin cũ hơn, bạn có thể làm điều đó bằng cách sửa đổi thời gian của các tập tin, bạn không cần ngày trong tên. – RealSkeptic