java内存区域与内存溢出异常

首先来看java虚拟机内存模型:

java虚拟机内存模型

区域分类:

线程共享:所有线程都可以访问的区域
线程隔离:每一个线程都需要一块隔离的区域,各线程之间互不影响,独立存储

各区域介绍:

1.程序计数器:字节码文件的行号指示器
2.java虚拟机栈:每个方法执行的同时都要创建一个栈。用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
3.本地方法栈:为虚拟机使用到的Native方法服务。
4.java堆:存放对象实例,也是gc的主要区域,简称“垃圾堆”
5.方法区:存放已经被加载的类信息,常量,静态变量,即时编译器遍以后的代码
HotSpot用永久区代替方法区
6.运行时常量池:是方法区的一部分,存放编译时生成的各种字面量和符号引用

内存溢出异常

1 java heap space java堆溢出
2 线程请求的栈深度大于虚拟机所允许的最大深度 StackOverflow
虚拟机在扩展栈是无法申请到足够的内存空间 outof
虚拟机栈和本地方法栈溢出
3 permGen space 常量池溢出
4 outof 直接内存溢出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值