![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
aqiangzai
一切都是为了心情,现在高兴或以后高兴,开始干吧就现在
展开
-
jvm垃圾收集器及启动参数使用说明
垃圾收集器表示内存回收的具体实现,区别于垃圾收集算法点击查看(相当于方法论),收集器基于收集算法实现。同时为了降低回收内存过程中对用户线程的影响的时间,衍生出不同的收集器。一般情况下年轻代需要回收的内存较多,存活对象较少,采用复制算法,年老代存活对象较多,需要回收的内存较少,采用标记清除/整理算法。1.serial收集器:串行收集器,采用单线程回收内存,同时暂停所有用户线程直到收集结束。...原创 2019-05-15 15:17:59 · 176 阅读 · 0 评论 -
jvm垃圾收集算法整理
1,标记清除算法标记可回收的内存,然后清除。2,复制算法。使用标记清除算法的过程中,如果回收的内存很少这个算法还是可以的,但是如果大量的内存都是需要回收的,那这个就比较笨重,因为我们只需要保留少量不被回收的内存就可以。这就衍生出了复制算法。3,标记整理算法使用标记清除算法的过程中,会产生大量内存碎片,导致分配大对象时频繁出现内存不足引发gc的问题,针对这个问题衍生出标记整理算法...原创 2019-05-15 16:12:14 · 118 阅读 · 0 评论 -
Java new一个对象的过程
1,首先到常量池中找类的带路径全名,然后检查对应的字节码是否已被加载,解析,验证,初始化,如果没有先执行类加载过程(class.forname())。2,类加载过程完成后,虚拟机会为对象分配内存。分配内存有两种方式,根据使用的垃圾收集器的不同使用不同的分配机制。(1)指针碰撞,当虚拟机使用复制算法或标记整理算法实现的垃圾收集器时,内存区域都是规整的,这时候使用指针碰撞分配内存,用过的内存放...原创 2019-05-15 17:19:29 · 9759 阅读 · 0 评论 -
jvm运行时数据区分布
1,程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程执行的字节码的行号指示器,通过改变指示器的值来选取下一条执行的字节码指令,帮助程序完成执行过程中存在的分支,循环,跳转,异常,线程恢复等功能。担任线程助跑器的职责,所以为线程私有内存区,同时是运行时数据区中唯一不会出现OutOfMemoryError的区域。2,虚拟机栈虚拟机栈描述的是Java方法(也就是字节码)执行的内存...原创 2019-05-24 15:50:04 · 110 阅读 · 0 评论 -
jvm启动过程(类加载过程)
jvm类加载过程包括5个过程,分别为加载,验证,准备,解析,初始化。1,加载①:通过一个类的全限定名来获取定义此类的二进制字节流。②:将这个字节流代表的静态存储结构转化为方法区的运行时数据结构。③:在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。2,验证:确保class文件的字节流中包含的信息符合虚拟机的要求,并且不会危害虚...原创 2019-05-24 17:38:19 · 435 阅读 · 0 评论