
JVM
文章平均质量分 93
荆茗Scaler
这个作者很懒,什么都没留下…
展开
-
JVM-jvm常用命令
配置jvm参数:-XX:+HeapDumpOnOutOfMemoryError - XX:HeapDumpPath=/home/biapp/m.hprof。jstat -gc 51972(PID) 5000(每隔n毫秒打印一次)-XX:+PrintGCDateStamps 可以记录GC发生的详细时间。-XX:+PrintGCDetails:可以打印详细GC信息至控制台。-XX:+PrintGC:打印最基本的回收信息。其中51972是进程号,5000为刷新时间。手工直接导,PID为进程号。原创 2022-12-12 10:14:32 · 4068 阅读 · 0 评论 -
jvm 类加载过程
java类加载过程一共分为5个步骤:加载、验证、准备、解析、初始化。jvm堆类加载的每一步骤都做了哪些事呢?以下详细的做一下分析: 1 加载。 java类加载阶段,虚拟机需要做以下三件事: 1>通过一个类的全限定名来获取定义此类的二进制字节流。 2>将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3>在java堆中生成一个代表这个类的j...原创 2019-11-21 14:47:10 · 205 阅读 · 0 评论 -
jvm 垃圾回收算法详谈
1、引用计数算法。 线程在运行过程中,堆中的对象每次多一个引用,jvm会给该对象引用数加1,每次少一个引用,引用数会减1.当EdenGen满后,进行Minor GC时,扫描到的对象引用数为0的对象会被垃圾回收器回收掉。 但是,计数器算法会有一个缺点,如果有两个对象没有可达性引用了,但是这两个对象互相引用对象的引用。那么Minor GC时,会发现这两个对象的引用数不为0,那么这...原创 2019-11-20 11:21:31 · 133 阅读 · 0 评论 -
jvm 对象分配原则
jvm的堆分为Eden区,Survior区,OldGen区。jvm运行过程中,虚拟机堆的对象分配原则: 1、对象首先分配在Eden区 2、大对象(大于Eden剩余空间或Eden区满后,Survior区空间不能满足大对象)直接进入老年代。 3、长期存活的对象(经过数次Minor GC后,Survior区的对象年龄已达到设置的age)进入老年代 ...原创 2019-11-20 10:23:48 · 607 阅读 · 0 评论 -
JVM的GC ROOTS有哪些?
jvm垃圾回收是根据可达性分析算法来判断堆里面的对象是否有用。可达性分析算法是从GC ROOTS扫描对象引用链,来筛选出有用的对象,扫面完成后,回收掉无用的对象。 jvm的GC ROOTS有哪几个地方呢? 1、虚拟机栈(局部变量表中引用的对象) 2、本地方法栈(本地方法引用的对象) 3、方法区中静态属性引用的对象 4、方法区中静态常量...原创 2019-11-20 10:10:54 · 10888 阅读 · 0 评论 -
JVM - 详述java虚拟机中的几个引用:强引用、软引用、弱引用、虚引用
我们都知道,jvm中进行GC时都是对java对象的回收清理,回收清理的对象是看对象是否存活,判定对象的存活都与对象的引用有关。在jdk1.2之前,java中的定义的引用很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种定义很纯粹,但是太过狭隘,一个对象在这种定义下只有被引用或者没有被引用两种状态,对于如何描述一些“食之无味,...原创 2019-10-20 12:45:17 · 154 阅读 · 0 评论