2009-05-11 34 views
9

Tôi đang gỡ lỗi rò rỉ bộ nhớ trong một ứng dụng chạy trên JDK 1.4.2_18 của Sun. Có vẻ như phiên bản này hỗ trợ dòng lệnh param -XX: + HeapDumpOnCtrlBreak được cho là nguyên nhân JVM đổ đống khi nó gặp sự cố điều khiển. Làm thế nào để gửi một quá trình nền trên một hộp Linux? Dường như các tín hiệu giết là cách mà nó phải hoạt động, nhưng tôi giết -l không báo cáo bất cứ điều gì rõ ràng là một Ctrl-Break, ít nhất là trên hộp Ubuntu của tôi.Làm cách nào để có thể gửi Ctrl-Break tới một tiến trình đang chạy Linux?

Cập nhật: Tôi đã thử nghiệm Kill -3 với Sun JDK 1.4.2_18 (_14 là người đầu tiên đổ đống này theo cách này) và đã hoạt động. Tệp kết xuất đống đã được tạo và quá trình vẫn đang chạy.

Trả lời

10

kill -QUIT có thể làm điều đó (nó sẽ tạo ra một kết xuất chuỗi được tạo ra bởi ctrl-break trên cửa sổ. Tôi đã không thử nó với tùy chọn đống mặc dù).

+0

Tôi không có hộp linux với jvm hỗ trợ tùy chọn -XX: + HeapDumpOnCtrlBreak vì vậy không thể kiểm tra điều này (và tôi chưa bao giờ thực sự làm như vậy không thể xác minh rằng nó hoạt động). – bm212

+0

Tôi muốn thấy một gợi ý về "kill -QUIT" hơn là "kill -3", mặc dù chúng tương đương nhau. – ephemient

+0

Tôi đã chỉnh sửa nó để nói kill -QUIT. – bm212

14

Ctrl- \ tương đương với UNIX/Linux của Windows Ctrl-Break. Wikipedia cũng nói với tôi rằng bạn cũng có thể sử dụng Ctrl-4 hoặc SysRq trên giao diện điều khiển ảo của Linux (tôi đoán bạn cần một thứ gì đó kỳ lạ đối với trình mô phỏng thiết bị đầu cuối thông thường để biểu diễn các lần nhấn phím đó (qua ssh/telnet)).

+1

Có, thường thiết bị đầu cuối bị ràng buộc để C- \ gửi SIGQUIT. Đây là cấu hình với 'stty quit', và tôi không chắc nó có phải là mặc định trên tất cả các hệ thống hay không. – ephemient

+0

@ phemient nó không phải luôn luôn, nhưng ngay cả thiết bị đầu cuối kỳ lạ có xu hướng sử dụng đó. Ví dụ như IBM 3161 của tôi. http://i.imgur.com/6DejIxY.jpg – Wyatt8740

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