Heap 堆
- 通过 new 关键字,创建对象都会使用堆内存
特点
- 它是线程共享的,堆中对象都需要考虑线程安全的问题
- 有垃圾回收机制
堆内存演示过程(jps + jmap查看)
1、代码
public class HeapDemo {
public static void main(String[] args) throws InterruptedException {
System.out.println("1...");
Thread.sleep(30000);
byte[] array = new byte[1024 * 1024 * 10]; // 10 Mb
System.out.println("2...");
Thread.sleep(20000);
array = null;
System.gc();
System.out.println("3...");
Thread.sleep(1000000L);
}
}
2、运行代码,打开终端,查看进程
jps
3、执行命令,查看内存使用情况
jmap -heap 16040
代码执行到1…输出时,执行一次jmap -heap命令,
代码执行到2…输出时,执行一次jmap -heap命令,
输出3…时再执行一次jmap -heap命令
4、刚运行,输出1时,对象没创建,堆内存使用5.7M
5、输出2时,对象已创建,堆内存15.7M
6、垃圾回收后,堆内存0.9M
jconsole工具查看
执行代码
执行命令
jconsole
jconsole工具连接
内存使用详情
jvisualvm工具(功能多)
输入命令
jvisualvm
查看
结束!!!!!
要往前走,就得先忘掉过去。