本篇内容介绍了“怎么理解Java虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
Jvm内存结构
>线程隔离区域说明:
线程私有
是一块内存空间
唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?)
线程私有
声明周期与线程相同
在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM PS:每一个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每一个方法从调用到完成,就对应着一个栈帧从入栈到出栈的过程
线程私有
声明周期与线程相同
在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM
PS:可以看出本地方法栈和Java虚拟机栈的特征基本一致。 区别是:Java虚拟机栈为执行Java方法服务,而本地方法栈为Native方法服务。
> 线程共享区域说明:
线程共享
存放对象实例
虚拟机内存中最大的一块
逻辑连续,物理不需要连续
存在OOM
是Java垃圾回收主要的区域
线程共享
存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码
≈永久代(Permanent Generation)本质不等价
不需要连续内存
存在垃圾回收,但是回收区域仅限于常量池和类型的卸载
存在OOM
“怎么理解Java虚拟机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。