温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java JVM内存区域的知识点有哪些

发布时间:2022-01-06 15:55:23 来源:亿速云 阅读:114 作者:iii 栏目:大数据

这篇文章主要讲解了“java JVM内存区域的知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java JVM内存区域的知识点有哪些”吧!

JVM内存区域

java JVM内存区域的知识点有哪些

  • 程序计数器
    1.每个线程都有自己独立的程序计数器
    2.线程执行的是非native方法,则程序计数器中保存的是当前需要执行的指令的地址;执行native方法是,值是undefined
    3.程序计数器大小不会随着程序执行而变化,故不会发生OOM(OutOfMemory)

  • Java虚拟机栈
    1.是线程私有的;
    2.存储局部变量表、操作数栈、动态链接、方法出口;
    3.局部变量表存放基本数据类型(不是对象,是int,short,boolean等8种,其中long和double占用两个变量空间)和对象引用;
    4.线程请求的栈深度大于虚拟机允许的深度时,发生StackOverflowError异常;如果虚拟机栈动态扩展时,无法申请足够的内存则OutOfMemoryError。

  • 本地方法栈
    1.本地方法栈对虚拟机使用到的Native方法服务;
    2.也会抛出StackOverflowError和OutOfMemoryError。

  • Java堆
    1.在Java虚拟机启动时产生,是所有线程共享;
    2.可再细分,如从内存回收角度来看,可再分为新生代、老年代、Eden空间、From Survivor空间、To Survivor空间;如从内存分配角度看,可再分为多个线程私有的分配缓冲区;
    3.Java堆可以在物理上不连续,逻辑上连续即可;
    4.如果堆中没有内存完成实例分配,并且堆的总大小也无法再扩展时,抛出OutOfMemoryError。

  • 方法区
    1.是各个线程共享的内存区域;
    2.用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;
    3.当方法区无法满足内存分配需求时,将抛出OutOfMemoryError。

  • 运行时常量池
    1.运行时常量池是方法区的一部分;
    2.存放Class文件中的常量信息、还会把翻译出来的直接引用也存储在这里;
    3.常量池无法再申请到内存时抛出OutOfMemoryError。

  • 直接内存
    1.不是Java虚拟机运行时数据区的一部分,是Java程序通过Native函数直接申请机器的内存;
    2.当内存不够时抛出OutOfMemoryError。

感谢各位的阅读,以上就是“java JVM内存区域的知识点有哪些”的内容了,经过本文的学习后,相信大家对java JVM内存区域的知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI