JVM内存管理之JVM内存分配策略

来源:互联网 发布:学而知不足,思而得远虑 编辑:程序博客网 时间:2024/06/04 19:14

一:操作系统的内存分配策略

操作系统的内存分配策略主要分为三种

静态内存分配栈内存分配堆内存分配

静态内存分配

静态内存分配是在程序编译时就能够确定的每个数据的在运行时所需的内存空间。这种分配策略不允许程序中有可变的数据结构,也不允许有递归或嵌套结构出现。

栈内存分配

即动态内存分配,通过栈来实现。在动态内存分配方案中,程序对数据区的需求在编译时是完全未知的,直到运行时才知道,但是规定程序在运行中进入一个程序模块时,必须知道该程序模块所需的数据区内存大小才能够为其分配内存。栈式内存分配按照先进后出的原则进行内存分配。

堆内存分配

只有到程序运行到相应的代码是才知道内存分配空间的大小,就需要使用堆内存分配策略。

二:java的内存分配

jvm的内存分配主要是基于堆和栈的内存分配

1):栈内存分配

栈内存分配和java线程绑定,每创建一个线程是,java就会创建一个与之对应的java栈。线程的方法调用对应java栈的压栈和出栈。每一个java方法对应一个栈帧。帧用来保存当前方法的参数,局部变量,中间计算过程和其他数据。
栈中主要存放基本类型数据和对象引用。

2):堆内存分配

java堆中存放应用程序运行时创建的所有类的实例或数组。java在创建一个对象是,在堆中分配该对象的存储空间,在栈中建立一个指向这个对象的指针(引用)。java堆是一个运行时数据区,内存空间的回收由GC负责。

0 0
原创粉丝点击