课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Java两项内存管理的方法
  • Java两项内存管理的方法

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

  • 昆明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--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56