jvm
文章平均质量分 66
哈哈抓哇
小java程序员
展开
-
JVM垃圾收集算法
jvm一般把内存区域(或者说堆内存)分为新生代和老年代,作这样的区分主要是为了方便收集,新生代的对象大部分都是朝生夕死,所以进行回收十分频繁,而老年代则是那些一直没有被收集过得内存,进行垃圾回收次数较少。这样就不用了对整块内存进行回收。因而才有了“Minor GC”“Major GC”“Full GC”这样的回收类型的划分。手机算法也有标记-清除算法,标记-复制算法,标记-整理算法。 标记可以理解为jvm会对将要回收的内存进行一次标记,这些标记过得内存区域是可能进行回收的,然后在第二次标记如果发现这个内存已原创 2021-04-14 09:55:07 · 83 阅读 · 0 评论 -
HotSpot虚拟机对象探秘
本文章来自于阅读《深入理解java虚拟机》的个人理解。可能包含很多错误的理解。 1.对象的创建 对象的创建大体上可分为三步,第一步当java虚拟机遇到new指令时,先回去堆中进行内存分配,内存分配的方式会根据堆内存是否规整来分为指针碰撞和空闲列表这两种方式,而java堆是否规整会根据使用的垃圾收集器是否有空间压缩整理的能力而决定。第二步当分配过可用内存后会对对象进行初始化,把对象内的值初始化成数据类型所对应的“零值“。第三步就是将对象指针指向这个堆内存上分配的空间。 2.对象的内存布局 堆内存中布局可分为原创 2021-04-12 10:27:56 · 69 阅读 · 0 评论 -
JVM内存区域分析
java虚拟机总共分成。 线程共享:方法区,堆,执行引擎,本地库接口 非线程共享:虚拟机栈,本地方法栈,程序计数器。 这上述几大类。在线程共享和非共享之外。运行时的数据区包含:方法区,堆,虚拟机栈,本地方法栈,程序计数器这几类。借用《深入理解java虚拟机》这本书中的图来描述一下如下: 下面结合书中的解释以及自己的理解重新看下虚拟机中这几大块的作用。 1.程序计数器 程序计数器十一块较小得看内存空间,它是当前线程所执行的字节码的行号指示器,程序的分支,循环,跳转,异常处理等功能都依赖这个计数器。由此可以看原创 2021-04-09 13:54:22 · 74 阅读 · 0 评论