昆明java培训
达内昆明广州春城路

18487146383

热门课程

Java两项内存管理的方法

  • 时间:2016-08-15
  • 发布:昆明Java培训
  • 来源:达内新闻

昆明java培训班的老师这次给大家说两个内存管理的方法,本地方法栈和java堆。

本地方法栈

本地方法栈与虚拟机栈所发挥的作用是非常相似的,区别不过是虚拟机栈为虚拟机执行 Java 方法服务,而本地方法栈则为虚拟机使用到的 Native 方法服务。在虚拟机规范中对本地方法栈中的方法使用的语言、使用方法与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它。甚至有的虚拟机(譬如Sun HotSpot虚拟机)直接就把本地方法栈和虚拟机栈合二为一。

与虚拟机栈一样,本地方法栈区域也会抛出 StackOverflowError 和 OutOfMemoryError 异常。

Java 堆

对于大多数应用来说,Java 堆是 Java 虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。

Java堆是垃圾收集器管理的主要区域,因此很多时候也被称为“GC堆”。从内存分配的角度看,由于现在收集器基本都采用分代收集算法,所以 Java 堆中还可以细分为:新生代和老年代;再细致一点的有 Eden 空间、From Survivor 空间、To Survivor 空间等。从内存分配的角度看,线程共享的 Java 堆中可能划分出多个线程私有的分配缓冲区。不过无论如何划分,都与存放内容无关,无论哪个区域,存储 的都仍然是对象实例,进一步划分的目的是为了更好地回收内存,或者更快地分配内存。

Java虚拟机规范的规定,Java 堆可以处于物理上不连续的内存空间中,只要逻辑上是连续的即可。在实现时,既可以实现成固定大小的,也可以是可扩展的,不过当前主流的虚拟机都是按照可扩展来实现的(通过-Xmx和 -Xms控制)。

如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,会抛出 OutOfMemoryError 异常。

听完昆明java培训班的老师给大家讲的这两个方法是不是觉得知识还不够,下一期记得关注我们,我们还有更多的资讯。

上一篇:Java虚拟机栈
下一篇:Java内存管理原理及内存区域

java游戏开发编程难吗?——达内java培训

程序猿必学之Java 9——昆明达内

java集合-Iterator迭代

达内编程培训大神带你修炼技术!

选择城市和中心
贵州省

广西省

海南省