温馨提示×

温馨提示×

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

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

怎么理解Java虚拟机

发布时间:2021-11-16 16:34:46 来源:亿速云 阅读:126 作者:iii 栏目:大数据

本篇内容介绍了“怎么理解Java虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  1. Jvm内存结构 怎么理解Java虚拟机


>线程隔离区域说明:

1.1、程序计数器

  • 线程私有

  • 是一块内存空间

  • 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?)

1.2、Java虚拟机栈

  • 线程私有

  • 声明周期与线程相同

  • 在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM PS:每一个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每一个方法从调用到完成,就对应着一个栈帧从入栈到出栈的过程

1.3、本地方法栈

  • 线程私有

  • 声明周期与线程相同

  • 在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM

PS:可以看出本地方法栈和Java虚拟机栈的特征基本一致。 区别是:Java虚拟机栈为执行Java方法服务,而本地方法栈为Native方法服务。

> 线程共享区域说明:

1.4、Java堆

  • 线程共享

  • 存放对象实例

  • 虚拟机内存中最大的一块

  • 逻辑连续,物理不需要连续

  • 存在OOM

  • 是Java垃圾回收主要的区域

1.5、方法区

  • 线程共享

  • 存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码

  • ≈永久代(Permanent Generation)本质不等价

  • 不需要连续内存

  • 存在垃圾回收,但是回收区域仅限于常量池和类型的卸载

  • 存在OOM

“怎么理解Java虚拟机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

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

AI