自动内存管理机制-2.Java内存区域与内存溢出异常

版权声明:可以转载,转载请注明出处~觉得读完有收获可以点个赞再走啊欢迎关注 https://blog.csdn.net/zhangzhaoyuan30/article/details/89517643

目录

1运行时数据区域

1.1程序计数器

1.2Java虚拟机栈

1.3本地方法栈

1.4Java堆

1.5方法区

1.5.1运行时常量池

1.6直接内存

2HotSpot虚拟机对象探秘

2.1对象的创建

2.2对象的内存布局

2.3对象的访问定位

3实战:OutOfMemory异常

3.1Java堆溢出

3.2虚拟机栈和本地方法溢出

3.3方法区和运行时常量池溢出

3.4本机直接内存溢出


1运行时数据区域

1.1程序计数器

1.2Java虚拟机栈

1.3本地方法栈

和Java虚拟机栈相似,不过是用于Native方法。

在HotSpot中合二为一。

1.4Java堆

存放对象实例和数组

1.5方法区

1.5.1运行时常量池

1.6直接内存

2HotSpot虚拟机对象探秘

2.1对象的创建

  • 加载:

  • 分配内存:

  • 初始化:

  • 对对象进行必要设置:
  • <init>初始化

2.2对象的内存布局

待补充

2.3对象的访问定位

3实战:OutOfMemory异常

3.1Java堆溢出

3.2虚拟机栈和本地方法溢出

-Xoss 设置 本地方法栈大小(但在HotSpot虚拟机中不区分本地方法栈和虚拟机栈,故无效)

-Xss 设置虚拟机栈

3.3方法区和运行时常量池溢出

-XX:PermSize:表示非堆区初始内存分配大小
-XX:MaxPermSize:表示对非堆区分配的内存的最大上限

3.4本机直接内存溢出

-XX:MaxDirectMemorySize,若不指定和堆最大值一样

猜你喜欢

转载自blog.csdn.net/zhangzhaoyuan30/article/details/89517643
今日推荐