2015-12-02 18 views
9

Câu hỏichương trình Ngăn chặn từ đâm khi hiển thị phân bổ đống dấu vết

Tại sao VisualVM chấm dứt chương trình của tôi khi cố gắng để xem đối tượng phân bổ stack trace, và làm thế nào để sửa chữa nó?


Tôi đang dọn dẹp một ứng dụng trong đó có một vài vấn đề bộ nhớ, hạnh phúc lớn nhất tạo ra một loạt các ngắn ngủi int[] gây GC để bắn như điên:

enter image description here

Khi Tôi nhấp chuột phải int[] và chọn Chụp nhanh và hiển thị dấu vết ngăn xếp phân bổ, ứng dụng của tôi đóng và một hộp cảnh báo bật lên nói rằng Không thể lấy ảnh chụp nhanh kết quả. Ứng dụng này chấm dứt:

enter image description here

Điều gần nhất tôi tìm thấy về đề tài này là một báo cáo lỗi mà recommended running my profiled application with -Xnoclassgc. Nó không hoạt động, kết quả là như nhau.


Specs

VisualVM: 1.8.0_60 (Build 1380-140910); platform 20140910-unknown-revn 
Java: 1.8.0_60; Java HotSpot(TM) 64-Bit Server VM (25.60-b23, mixed mode) 
Eclipse: Luna Release (4.4.0) Build id: 20140612-0600 
System: Windows 7 (6.1) Service Pack 1, amd64 64bit 

sụp đổ log

http://pastebin.com/a4YPWutj

Kích thước của nhật ký sự cố vượt giới hạn ký tự, vì vậy tôi phải đặt nó ở nơi khác. Lấy làm tiếc.

+0

Chỉ một số câu hỏi trước tiên: 1. Eclipse có liên quan đến tình huống này mà bạn vừa mô tả không? Bạn đã liệt kê phiên bản Eclipse của bạn, nhưng không đề cập đến nó theo bất kỳ cách nào khác. 2. Thông tin Java và hệ thống có đến từ máy chủ mà bạn đang chạy ứng dụng không? –

+0

Ngoài ra sự cố ứng dụng sẽ dẫn đến một báo cáo sự cố được lưu cho mục đích gỡ lỗi. Bạn có thể định vị tệp (hprof?) Và dán nội dung có liên quan ở đây không? –

+0

Bạn có kiểm tra Java Mission Control (jmc.exe) không? Đó là công cụ tương tự nhưng đối với Java8 với một số tính năng miễn phí. Nhưng bạn có thể làm tương tự với VisualVM. –

Trả lời

5

Ok. Vì vậy, dựa trên crashlog thu được, có vẻ như bạn chạy vào một VisualVM lỗi đã báo cáo ở đây:

JVM being profiled crashes

Người nộp lỗi ban đầu thu hẹp hành vi này xuống Java8, vì vậy cơ hội tốt nhất mà bạn có đang chạy VisualVM trên một thời gian chạy (Java7) cũ hơn. Nếu đây là một tùy chọn cho bạn, thì bạn chỉ cần tải xuống Java7 JDK và chạy VisualVM trực tiếp từ đó.

+0

Aw người đàn ông, tôi đoán tôi có thể bắt đầu sử dụng JMC cho bây giờ, như sử dụng Java 7 không phải là một lựa chọn /: Cảm ơn bạn đã tìm kiếm này mặc dù! –

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