Tôi đang nghiên cứu về Java JMX và JConsole. Tôi tò mò về khả năng quản lý bộ nhớ của JConsole. Ví dụ, có một nút "Thực hiện GC" trong tab Memory:JConsole của Java có thể được sử dụng để tự động cấu hình bộ nhớ không?
Giả sử tôi có ứng dụng Java đơn giản mà ăn lên bộ nhớ, một cái gì đó như thế này:
public class MemoryEater
{
public static void main(String[] args)
{
Vector v = new Vector();
while (true)
{
byte b[] = new byte[1048576];
v.add(b);
Runtime rt = Runtime.getRuntime();
System.out.println("free memory: " + rt.freeMemory());
}
}
}
Nên có một cách để cấu hình JConsole để ngăn chặn ứng dụng này tiêu thụ số lượng bộ nhớ X
? Hay tôi cần tạo một MBean mới qua JMX? cảm ơn
Bạn có thể cấu hình bao nhiêu bộ nhớ quá trình Java có thể tiêu thụ như một tùy chọn khởi động dòng lệnh. Tôi không nghĩ rằng điều này có thể được thay đổi trong thời gian chạy. http: // stackoverflow.com/questions/763295/setting-jvm-heap-size-at-runtime – Thilo
Nếu bạn lo lắng về một cá thể JVM ăn hết bộ nhớ hệ điều hành, bạn có thể giới hạn kích thước heap của JVM bằng -Xmx64m, nơi bạn có thể thay thế 64m để chỉ định kích thước heap tối đa cho phép của bạn tính bằng megabyte. –