码迷,mamicode.com
首页 > 编程语言 > 详细

Java千百问_07JVM架构(003)_内存分配有哪些策略

时间:2016-05-22 12:22:22      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

点击进入_更多_Java千百问

1、内存分配有哪些策略

我们从编译原理讲起,不同的开发环境、开发语言都会有不同的策略。一般来说,程序运行时有三种内存分配策略:静态的栈式的堆式的

  • 静态存储
    是指在编译时就能够确定每个数据目标在运行时的存储空间需求,因而在编译时就可以给它们分配固定的内存空间。
    这种分配策略要求程序代码中不允许有可变数据结构的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致编译程序无法计算准确的存储空间。

  • 栈式存储
    栈式存储分配是动态存储分配,是由一个类似于堆栈的运行栈来实现的,和静态存储的分配方式相反
    在栈式存储方案中,程序对数据区的需求在编译时是完全未知的,只有到了运行的时候才能知道,但是规定在运行中进入一个程序模块的时候,必须知道该程序模块所需要的数据区的大小才能分配其内存。和我们在数据结构中所熟知的栈一样,栈式存储分配按照先进后出的原则进行分配。

  • 堆式存储
    堆式存储分配专门负责在编译时或运行时无法确定存储要求的数据结构的内存分配。
    比如可变长度串对象实例,堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放。

2、java内存分配策略

java的内存分配主要是以堆栈为主,具体如下:

了解java内存模型看这里:java内存模型是什么样的
了解jvm实例结构看这里:jvm实例的结构是什么样的
了解jvm如何管理内存看这里:[jvm是如何管理内存的][4]
[4]:

Java千百问_07JVM架构(003)_内存分配有哪些策略

标签:

原文地址:http://blog.csdn.net/ooppookid/article/details/51469703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!