Khi tôi chạy mã được đề cập dưới đây (sử dụng netbeans), kích thước phân bổ heap thay đổi trong một hình dạng sawtooth.I am gắn chụp từ jVisualVM trong đó cho thấy đồ thị heap được sử dụng trong một hình dạng sawtooth. "lol" n stdout.Tại sao đồ thị có hình răng cưa?
class one{
static int i=0;
public static void main(String a[]){
while(i<10){
System.out.println("lol");
}
}
}
bất cứ ai có thể giải thích lý do đằng sau hình dạng của đồ thị của đống đã qua sử dụng?
ps: Đây xảy ra ngay cả khi tôi chạy nó mà không sử dụng NetBeans vì vậy nó được phần nào không liên quan đến netbeans ...
Và dường như thay đổi tùy theo ... tốt ... 3 megabyte? Điều đó có thực sự đúng không? – Owen
Bạn nhận được một số thông tin chi tiết về điều này bằng cách thử các thuật toán thu gom rác khác. Xem ở đây để biết thông tin: http://www.tikalk.com/java/garbage-collection-serial-vs-parallel-vs-concurrent-mark-sweep – skaffman
@ buch11: không bao giờ đánh giá thấp lượng rác khổng lồ ngay cả Java tầm thường nhất phương thức/API có thể tạo. Tôi đã thực hiện tính toán khoa học đa luồng bằng cách sử dụng Java và tôi có thể nói với bạn rằng có rất nhiều gotchas thậm chí không buồn cười;) Bạn phải nhận ra rằng hầu hết các lập trình viên Java sẽ vui vẻ sử dụng những thứ như * Bản đồ * và cho bạn biết rằng nếu nó không phải là một nút cổ chai không có gì sai với nó. Java về cơ bản là một thế giới mà gần như tất cả mọi người tạo ra vô số chất thải và nghĩ rằng: * "Các nhà sưu tập rác sẽ chăm sóc nó" *. Có một lý do tại sao Photoshop không được viết bằng Java;) –
SyntaxT3rr0r