
JVM
文章平均质量分 69
俺是农村的
致力于在IT界做最好厨子的胖子
展开
-
JVM-GC回收
1.引用计数法当对象被创建出来时,会给该对象赋值一个变量为1,当有其他对象引用改对象时,就对变量+1,当改对象的生命周期结束或者赋值其他值后,对变量-1,当变量为0时,GC回收该对象如果互相引用的话,则变量永远不为0,则GC不回收。2.可达性算法从GCRoot开始扫描,扫描所有引用节点,扫描完,没有被引用到的节点就是需要回收的可作为GCRoot的对象1).栈中的引用对象2).方法区中的类静态属性引用的对象3).方法区常量引用的对象4).本地方法栈中的静态方法引用对象3原创 2022-02-16 10:35:23 · 283 阅读 · 0 评论 -
JVM内存溢出分析工具(visualvm)
1、首先下载visualvm,由于JDK8以后就不会集成visualvm,所以需要自己下载一个visualvm下载地址2、修改visualvm_212\etc\visualvm.conf文件,新增jdkhome地址,然后安装Visual GC工具打开visualvm,找Visual GC安装(我已经安装了,所有这里没有了)3、设置tomcat的jvm参数,新增溢出的输出文件set "JAVA_OPTS=-Xms100m -Xmx100m -XX:+HeapDumpOnOut.原创 2022-02-16 10:09:55 · 2865 阅读 · 0 评论 -
JVM内存分配
我们知道在jvm内存模型中,分为堆、虚拟机栈、方法区、本地方法栈、程序计数器,其中堆又分为新生代和老年代,那么对象的在堆是如何分配呢?1.新生代内存分配 新生代分为eden space,from space和to space三个区域,from space和to space这两个去又叫Survivor区,它们之间的比例为(8:1:1),这个比例也是可以修改的。2.内存分配 现在是尝试分配三个2MB的对象和一个4MB的对象,然后我们通过JVM参数 -Xms20...原创 2021-03-18 11:00:45 · 607 阅读 · 0 评论 -
JVM如何判断对象是否存活
1.引用计数算法(主流虚拟机很少用这种算法) 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失败时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。 缺点:很难解决对象之间互相循环引用的问题 例如:objA.instance=objB以及objB.instance=objA,两个对象互相引用,这两个对象以及不可能再被访问,但是它们因为互相引用这对方,导致它们的引用计数器值都不为0,于是引用计数器算法无...原创 2021-03-17 23:32:44 · 150 阅读 · 0 评论 -
JVM内存模型
1.运行时数据区域2.程序计数器 程序计数器是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。 工作方式:字节码解释器工作时,就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能dou...原创 2021-03-15 10:40:32 · 117 阅读 · 0 评论