问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java虚拟机什么点出发gc

发布网友 发布时间:2022-04-20 06:01

我来回答

1个回答

热心网友 时间:2023-08-25 17:21

要回答这个问题,先了解下GC的发展史、jvm运行时数据区的划分、jvm内存分配策略、jvm垃圾收集算法等知识。
先说下jvm运行时数据的划分,粗暴的分可以分为堆区(Heap)和栈区(Stack),但jvm的分法实际上比这复杂得多,大概分为下面几块:
1、程序计数器(Program Conuter Register)
程序计数器是一块较小的内存空间,它是当前线程执行字节码的行号指示器,字节码解释工作器就是通过改变这个计数器的值来选取下一条需要执行的指令。它是线程私有的内存,也是唯一一个没有OOM异常的区域。
2、Java虚拟机栈区(Java Virtual Machine Stacks)
也就是通常所说的栈区,它描述的是Java方法执行的内存模型,每个方法被执行的时候都创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等。每个方法被调用到完成,相当于一个栈帧在虚拟机栈中从入栈到出栈的过程。此区域也是线程私有的内存,可能抛出两种异常:如果线程请求的栈深度大于虚拟机允许的深度将抛出StackOverflowError;如果虚拟机栈可以动态的扩展,扩展到无法动态的申请到足够的内存时会抛出OOM异常。
3、本地方法栈(Native Method Stacks)
本地方法栈与虚拟机栈发挥的作用非常相似,区别就是虚拟机栈为虚拟机执行Java方法,本地方法栈则是为虚拟机使用到的Native方法服务。
4、堆区(Heap)
所有对象实例和数组都在堆区上分配,堆区是GC主要管理的区域。堆区还可以细分为新生代、老年代,新生代还分为一个Eden区和两个Survivor区。此块内存为所有线程共享区域,当堆中没有足够内存完成实例分配时会抛出OOM异常。
5、方法区(Method Area)
方法区也是所有线程共享区,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。GC在这个区域很少出现,这个区域内存回收的目标主要是对常量池的回收和类型的卸载,回收的内存比较少,所以也有称这个区域为永久代(Permanent Generation)的。当方法区无法满足内存分配时抛出OOM异常。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时间试排卵纸最佳 排卵第十天排卵试纸弱阳怎么回事 手机app下载课后帮 课后帮点击了家长怎么改成学生的 课后帮绑定学生后还能绑定家长吗 课后帮怎么注册 课后帮注册教程 癫痫急救的正确方法 癫痫持续状态的抢救要点 小儿癫痫发作的急救措施 癫痫病急救常识有哪些要点 JVM,JRE,JDK各是什么含义?之间的关系 Java JVM怎么学习啊?从哪方面入手 jvm有什么用 java代码运行的时候将内存分成哪些区? 关于JAVA中JVM的栈帧疑问? Java垃圾回收:GC在什么时候对什么做了什么 JRE和JVM有什么关系? java虚拟机的运行时数据区有几块 java虚拟机运行时数据区包括哪些 jvm的理解 java内存模型和运行时的数据区域的区别 jvm堆内存区域包括哪些 华为荣耀8X语音录音删除可以找回吗没有备份? 请问一下honor7c自动关机后开不了机是怎么回事? 华为荣耀7能换电池吗? 华为mate7怎样更换电池?图解。 华为mate7怎样更换电池图解 换电池需要多长时间? 华为手机更换电池怎么拆 荣耀畅玩7C用多久需要换电池? 用什么方法可以让鱼浮出水面捕鱼 海上捕鱼有多少种捕鱼方法 大型水库养鱼与捕鱼的方法 在水库里面用什么方法捕鱼最好? 请问池塘捕鱼什么方法最有效? 求一种简单有效率的捕鱼方法 如何利用大水面进行罗非鱼养殖? 出海捕鱼。在船上怎么工作呢。船身剧烈晃动。使不... 全国大水面捕鱼视频 请问用鱼网捕鱼违法嘛? 一般来说,程序具有哪些特征? 在操作系统中多道程序的三个基本特点是什么 2.程序的并发执行有三个特征,分别是___.____.____. 面向对象程序设计的3个主要特征是_____,继承性和... 面向对象程序设计的三大特点是什么?各自的特点又... 求一个Java代码包含多态、继承、封装三个特性 是什么2,认识过程的三个特点是什么定 程序语言分为哪三类?简要介绍各类语言的特点? 类的三个基本特征 面向对象的三个主要特点,并简单说明其作用,求高...