java内存的划分_java内存划分必会知识

原标题:java内存划分必会知识

Java这几年很是火热,这也是跟其作为一门语言的特殊性有很大的关系,今天给大家分享的是关于Java内存划分的这样一个知识,希望对大家有所帮助。

d62d49daeef1cf432fee9030c4062cbc.png

Java内存JVM内存的区分

JVM的内存能够区分为以下几个首要部分:

Program Counter Register,程序计数器,线程私有,是一块较小的内存空间,能够理解为当时线程执行字节码的行号指示器。

Method Area,办法区,由各线程同享,用于加载类信息,常量,静态变量等数据。在HotSpot虚拟机的完结中,称这部分内存为Permanent Generation(永久代),这使得虚拟机能够像办理堆内存一样对这部分内存进行办理,能够通过参数-XX:MaxPermSize指定永久代的上限。而在其他虚拟机完结中并未运用永久代来完结办法区。当办法区无法满意内存分配需求时,便会抛出OutOfMemoryError。

Java Heap,堆,线程同享,对大部分使用来说,这是JVM种最大的一块内存区域。JVM标准规则:一切的目标实例和数组都要在堆上分配。

堆是内存收回的主战场,因而由称为Garbage Collected Heap(GC堆),在分代搜集战略下。堆能够进一步区分为新生代和老时代,更详尽的:

Eden区,目标第一次创立时,从Eden区拓荒空间

Survivor区,当Eden区不足以进行下次内存分配时,JVM触发一次GC,通过GC但未被收回的目标,被搬运到Survivor区。Survivor分为From,To两部分,屡次内存收回时未被收回的目标在这两块区域中来回搬运。

Old区,当通过必定次数的GC后仍未被收回的目标,JVM将其搬运到老时代区

4. JVM Stack,JAVA虚拟机栈,线程私有,其生命周期与对应的线程相同。当每个办法执行时,均会创立一个栈帧(Stack Frame)用于存储局部变量表,操作数栈,动态链接,办法出口等信息。每个办法的执行和完结,便对应着Stack Frame在虚拟机栈中的出栈和入栈的进程。一般意义上粗糙地将JVM内存区分为堆和栈,其中的栈便指的是JVM Stack.

5. Native Method Stack,本地办法栈,与JVM Stack类似,本地办法栈对应的是Native办法的执行办理。

此外,程序运转所需求的内存拓荒在JVM的内存空间中,也能够直接请求体系内存(Directive Memory),可是直接请求的体系内存不受JVM的废物收回办理,其开释由体系层面操控,因而关于不重视内存收回的JAVA程序员来说,简单导致内存溢出等问题的发生。

文章源自荣新科技官网:www.vfast.com.cn欢迎访问,转载需注明出处 返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值