Tôi có một trường hợp Tomcat được trưng bày các hành vi sau đây:Làm thế nào để điều tra thu thập quá java rác
- Chấp nhận một http request đến duy nhất.
- Đưa ra một yêu cầu tới máy chủ phụ trợ và lấy lại khoảng 400kb XML.
- Chuyển qua XML này và chuyển đổi nó thành khoảng 400kb JSON.
- Trả lại phản hồi JSON.
Vấn đề là trong quá trình xử lý yêu cầu 400k, webapp của tôi tạo ra khoảng 100mb rác tràn đầy không gian Eden và kích hoạt bộ sưu tập thế hệ trẻ.
Tôi đã cố gắng sử dụng chức năng hprof java được xây dựng để làm các trang web phân bổ hồ sơ nhưng Tomcat dường như không khởi động đúng với điều đó tại chỗ. Có thể là tôi hơi thiếu kiên nhẫn khi tôi hình dung hồ sơ cấp phát bộ nhớ có chi phí cao và do đó việc khởi động tomcat có thể mất một thời gian dài
Các công cụ tốt nhất để sử dụng để làm hồ sơ bộ nhớ java của các đối tượng rất trẻ/rác? Tôi không thể sử dụng đống bãi vì các đối tượng tôi quan tâm là rác.
Jvisualvm profiling là khó khăn như máy chủ tomcat của tôi chạy trên Linux và tôi thà tránh ovehead của việc nó chạy trên cửa sổ nơi tôi làm phát triển của tôi hoặc cài đặt một hộp Linux gui. – mchr
Cài đặt JDK tương ứng trên Linuxbox và chuyển hướng jvisualvm để sử dụng máy chủ X11 chạy trên hộp windows của bạn. Xming trực tiếp trên máy, hoặc Knoppix chạy trong một phiên vmware, hoạt động rất độc đáo. –
Cũng lưu ý rằng nếu bạn thêm voodoo thích hợp vào lời gọi JVM Tomcat, jvisualvm có thể kết nối từ Windowsbox của bạn mà không cần thêm adieu. –