Java入门之了解JVM(26)
在程序运行期间,JIT(即时编译器)会对程序进行优化,如会将执行频率高的代码,按照方法为单位的原则进行编译运行(编译出来的代码存放在方法区),其中就包含了内存逃逸分析,内存逃逸分析的目的主要是为了减轻内存堆分配压力,内存逃逸分析主要通过分析方法内的对象是否能够“逃逸”,如果不能“逃逸”则启用栈内分配内存“逃逸”指的是什么?
通俗点解释,就是方法内的对象,是否能够逃到方法以外;即在方法内生成的对象是否被return返出去又或者是否用通过赋值传递出去
关于什么是“垃圾”和垃圾回收算法
什么是垃圾
java不像C/C++一样需要手动管理内存,这是因为这些工作都交给JVM的垃圾回收机制来完成了,那么JVM到底时如何判断一个对象是“垃圾”(无用的对象)的?针对什么是垃圾,JVM有2种算法可做到如下
1)引用计数器算法:
即通过对象是否被引用来判断是否为垃圾,但这种算法有个问题,就是当两个垃圾互相引用对象,那么引用计数器算法就无法标记这两个垃圾,而且在极端的情况下,很多无用的对象之间相互引用,就无法将其标记了,也就无法这些对象清除,这就是引用计数器算法的弊端,因此目前JVM并没有使用这种算法,而是使用可达性分析算法;
推荐阅读
- 唐僧|tap评分高达9.1,《黑色沙漠》手游终于要来了,你了解了吗?
- viper|最佳外援是VIPER,新任FMVP坐不住了?本土选手机制了解一下
- lpl|LPL为何处理不了猫咪,自身了解太浅,根本不重视S11!
- 传奇|我们玩传奇3不仅仅是游戏,更是情怀和回忆,这款手游你了解吗?
- t1|vivo T1究竟值不值得购买?看了这些后你可能有更深了解
- 使命召唤18|王者荣耀 想要轻松上分英雄克制关系了解一下 公孙离克制上官婉儿
- 暗黑破坏神2|《暗黑破坏神2》七种职业!那个才是最适合新手的入门职业!
- s6|金铲铲之战:测试服内容抢先看,5分钟带你了解S6赛季的变化
- 电影|“王者宇宙”全面开启,三分钟了解官方后续动作,你想要的全都有
- 米哈游|米游社三周年,米哈游游戏的必备软件,你了解多少?