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):回收堆内存中的数据
项目中的数据是怎么运行的呢?
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):回收堆内存中的数据
相关文章推荐
- 玩转JVM虚拟机:JVM内存结构
- Java 虚拟机(JVM)运行时内存结构
- 关于Java虚拟机二三事(一)---Java技术体系及JVM内存结构
- [二]Java虚拟机 jvm内存结构 运行时数据内存 class文件与jvm内存结构的映射 jvm数据类型 虚拟机栈 方法区 堆 含义
- java 虚拟机系列文章2--JVM内存结构
- 玩转JVM虚拟机:JVM内存结构
- JVM内存结构和6大区域
- Java中的OutOfMemoryError和JVM内存结构
- JVM学习笔记一 之 内存结构
- JVM 内存结构分析
- JVM内存区域的划分(内存结构或者内存模型)
- Java 虚拟机总结 - JVM 内存区域
- JVM内存结构浅析
- Java中的OutOfMemoryError和JVM内存结构
- Java虚拟机探究之--JVM结构与内存模型
- java jvm内存结构(回顾)
- JVM--内存结构
- JVM(java 虚拟机)内存设置
- 【JVM】内存结构浅析
- JVM内存结构