美文网首页
Java基础(3)——JVM内存模型

Java基础(3)——JVM内存模型

作者: 我变秃了也变强了 | 来源:发表于2017-06-06 20:41 被阅读0次

Java for android 基础知识。

JVM的内存结构分为:

方法区(method)

栈内存(stack)

堆内存(heap)

本地方法栈(java中jni的调用)

1.堆内存:

所以通过new创建的对象的内存都在堆中分配。

操作系统有一个记录空闲内存地址的链表,当系统收到程序申请时,会便利该链表,寻求第一个空间大于所申请空间的堆结点,然后将该结点从空闲中删除,并将该结点分配给程序。

获得空间比较大,也比较灵活。

2.栈内存:

在windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话意思是栈顶的地址和栈最大容量都是预先规定好的,在win下,栈的大小是固定的(编译时就确定的一个常数),如果申请空间超过栈的剩余空间就会overflow。

由系统自动分配,获得空间较小,速度较快,但程序员无法控制。

***堆与栈的补充说明***

基础数据类型直接分配在栈空间,方法的形式参数,直接直接在栈空间分配,当方法调用完成后从栈空间回收。

引用数据类型,需要new来创建,即在栈空间分配一个地址空间,又在堆空间对象的类变量。

方法的引用参数,在栈空间分配一个地址空间,并指向堆空间对象区,当方法调用完成后从栈空间回收。

局部变量new出来时,在栈和堆分配空间,当局部变量生命周期结束后,栈空间立刻被回收,堆空间等待GC垃圾回收。

字符串常量,static在DATA区域分配,this在堆分配,数组在栈空间分配数组名称,又在堆空间分配实际大小。

3.本地方法栈

用于支持native方法(NDK)执行,储存了每个native方法的调用状态。对于本地方法接口,实现JVM并不要求一定要它支持,甚至可以完全没有。Java本地接口(JNI)是出于可移植性考虑。

4.方法区

保存了方法代码(编译后的java代码)和符号表。存放了加载的类信息、静态变量、final类型常量、属性和方法信息。JVM用持久代(Permanet Generation)来存放方法区。

相关文章

  • Java基础之内存模型

    Java基础之内存模型 目录 Java内存模型简单介绍 JVM介绍 存储方式 并发原因 Java内存模型与系统内存...

  • Java知识图谱

    Java基础 JVM JVM内存模型和结构 GC原理&内存分配策略 性能调优:Thread Dump class ...

  • 2.深入volatile

    1.并发基础 2.java内存模型&jvm内存模型 上图可以清除看出,每个工作线程都有独立的内存空间 3.特性 可...

  • Java工程师成神之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java工程师成神之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • 牛人

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java学习之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • 【收藏篇】Java工程师成神之路

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java工程师成神之路~

    一、基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 http:...

  • Java 工程师成神之路(2018 年修订版)

    基础篇 1.1 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别。 Java内存模型 内存可见性、重排...

网友评论

      本文标题:Java基础(3)——JVM内存模型

      本文链接:https://www.haomeiwen.com/subject/uwynfxtx.html