问答学习法之1问

最近有些迷茫,脑子里的想法很多,但是却很难落地。

“拆”,大系统可以拆成小系统,大模块可以拆成小模块,学习及想法亦可以拆。今天我们就一起来吧想法拆解一下。具体如何拆呢?——问答学习法

第一问:JAVA的内存模型简介。

那么什么是JAVA内存呢?

首先应当从java运行机制说起,java源程序通过编译为.class字节码文件。JVM通过类加载器加载字节码文件,然后执行引擎负责调度执行,运行期数据区即JAVA内存。

内存分区:堆内存、栈内存、方法区、程序计数器、本地方法栈。

分区特点:

堆内存一般存储对象实例及数组,内存设置参数最小堆内存-Xms 最大堆内存-Xmx,一般这两个参数等值。

堆内存又被划分为不同代:永久代、老年代、新生代。

堆内存GC机制:Eden - From - to - Old

内存分配过程及GC回收:

从对象创建过程说起,Object obj=new Object();

类版本信息,方法描述等信息存储在方法区(永久代),JVM加载类过多会抛出永久代溢出异常。

对象存储于堆内存,当引用不存在,可通过手动或自动GC机制得到回收。当对象创建过多或内存过小,新生代来不及回收,新生代的对象将迁移至老年代,以此类推,老年代不够使将迁移至永久代,如果永久代也不够将抛出OutOfMemoryException。

栈内存一般存储变量,具有压栈弹栈特性(先进后出)。上述的引用变量存储在栈内存中。

StackOverFlowException栈内存溢出现象,深度过深后出现。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江晓曼*凡云基地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值