您的位置:首页 > 其它

JVM虚拟机内存结构

2017-11-14 00:00 351 查看
JVM内存结构

项目中的数据是怎么运行的呢?

java文件编译后运行就变成了class文件

class文件通过类加载器存入内存空间中

内存空间:

方法区:保存了static和class的信息 ,且在方法区中是永久保存的,垃圾回收机制(GC)是不会回收的

:一般由程序员分配释放,保存了new出来的信息,在堆中垃圾回收机制(GC)是会回收的

堆内存中又分为新生代和老生代

新生代:不经常使用的对象存在的地区(GC回收的次数比较多的)

eden:当new出来的时候就会在eden中,也是GC经常回收的一个区

注:S1和S2功能是一样的,大小也是一样的

S1(from):new出来后一段时间就会保存在这里

S2(to):new出来后一段时间就会保存在这里

老年代: 经常使用的对象存放的地区 (GC回收的次数比较少的)

当你经常使用一个对象的时候,就会自动的保存到老年代



:由编译器自动分配释放,保存了临时信息,即使用的方法,在栈中会自动释放资源,

常见问题:栈内存会不会内存溢出呢?

答案: 会的,例如死循环或者在类中调用本类,它们会一直循环知道大于栈内存的深度就会内存溢出

本地方法栈:在安卓开发中底层是c语言,本地方法栈表示用java调用c语言

垃圾回收机制(gc):回收堆内存中的数据

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息