Dan*_*cco 1 java memory allocation
在JConsole下观察到的以下代码显示了堆大小的不断增加.堆最多可达25mb,然后GC运行并将堆大小减少到接近3MB.这是预期的行为吗?我很惊讶!
public class Dummy {
public static void main(String[] args) {
System.out.println("start");
while(true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用Snow Leopard.
与jconsole通信会导致分配对象.我相信你在这里看到的是你的测量方法的神器.在编译代码时,HotSpot可能还会进行轻微分配.如果您担心,请使用分析器查看正在分配的内容(同样,请注意分析器界面的分配).
正常的GC行为是为了避免不必要的运行.您将在整个网络上看到内存使用情况的锯齿图.缓存和交换友好性与避免工作之间存在一些妥协.此外,服务器HotSpot比客户端HotSpot更积极地使用内存.