Tôi viết một chương trình đơn giản và sử dụng jconsole.exe để theo dõi kích thước heap của nó.Tại sao JVM heap tiếp tục phát triển?
public class HeapTest {
public static void main(String[] args) {
while(true) {
}
}
}
Đây là kết quả
Tôi không hiểu tại sao kích thước heap không ngừng phát triển. Tôi không mới() bất kỳ đối tượng nào trong chương trình của tôi.
Heap được sử dụng cho chương trình của tôi là gì?
Tôi không thêm bất kỳ đối số bổ sung nào vào jconsole.exe; chỉ cần nhấp đúp vào nó, sau đó tải quá trình java theo PID.
Môi trường: Java 1.8.0_25 dưới cửa sổ 7
nó có thể làm điều gì đó trong nền, tôi chắc chắn nếu bạn nhấp vào thực hiện GC (mà bạn không nên trong môi trường sống), nó sẽ thả ngay lập tức. – SMA
@SMA - Nó có thể là do các chủ đề nền chạy trong JVM .. Họ có chi phí riêng của họ .. Sẽ có ít nhất 4 chủ đề khác đang chạy với chủ đề 'main' khi JVM bắt đầu. Heap có thể tăng dần do thực hiện. – TheLostMind
Vâng, chúng tôi có finalizer, chủ đề vv chính trong nền đó là những gì tôi có nghĩa là .. – SMA