网站静态与动态,手机网站 自适应屏幕,Wordpress上传万网空间,淘宝现在不能发布网站建设文章目录 一、内存结构图二、堆的定义三、堆内存溢出四、堆内存排查工具 一、内存结构图 二、堆的定义
1、通过new关键字创建的对象#xff0c;都会放到堆空间中。 2、它是线程共享的#xff0c;堆中的对象都要考虑线程安全问题。
那有同学肯定会问#xff0c;方法内通过n… 文章目录 一、内存结构图二、堆的定义三、堆内存溢出四、堆内存排查工具 一、内存结构图 二、堆的定义
1、通过new关键字创建的对象都会放到堆空间中。 2、它是线程共享的堆中的对象都要考虑线程安全问题。
那有同学肯定会问方法内通过new创建的对象它是存放在堆中吗线程安全吗
回答依然存放在堆中但是线程安全的。因为方法内的局部变量不涉及到多线程共享。3、堆中的内存依赖GC进行回收释放。
三、堆内存溢出
堆内存参数-Xmx1m
错误信息 代码复现
import java.util.ArrayList;public class Demo03 {public static void main(String[] args) {int i 0 ;ArrayListString list new ArrayList();String a 1111111;try {while (true){list.add(a);a a;i;}} catch (Throwable e) {e.printStackTrace();System.out.println(i);}}
}四、堆内存排查工具
1、jps工具 查看当前服务器中有那些Java进程。
2、jmap工具 输出堆内存日志信息查看堆内存占用情况
命令jmap -heap pid
3、jconsole工具 图形化工具更强大可以执行GC回收、监测死锁。 4、jvisualvm工具 图形化工具更强大可以执行GC回收、监测死锁。还可以查看堆Dump。 点击 堆 Dump 按钮 会生成一份dump文件点击右侧查看按钮 这个查看功能有点慢 以上工具的详细用法自行百度。 推荐jmap。方便快捷。