JVM
文章平均质量分 90
深入理解JVM
刘小豆豆豆
路漫漫其修远兮,吾将上下而求索!
展开
-
JVM基本参数调优
JVM参数调优1、JVM的标配参数和X参数JVM的参数类型:标配参数java -versionjava -help-后不能由空格X参数(了解)-Xint():解释执行-Xcomp :第一次使用就编译成本地代码-Xmixed:混合模式XX参数下文再讲:2、XX类型参数之布尔类型:公式:-XX:+ 或者 - 某个属性值(+表示开启,-表示关闭)如何查看一个正在运行中的java程序,它的某个jvm参数是否开启?具体值是多少?jps -l (类似于Lin原创 2021-03-22 22:14:44 · 292 阅读 · 0 评论 -
JVM中的强引用、软引用、弱引用以及虚引用
强软弱虚引用:前言在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于(reachable)可达状态,程序才能使用它。从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object strongReference原创 2021-03-22 21:14:57 · 412 阅读 · 0 评论 -
JVM中如何确定哪些对象被回收?(枚举根节点做可达性分析)
如何确定哪些对象是否可以被回收?1.引用计数法。上文提到了,引用一次计数加1,取消引用则减一,等到为0时等待被回收,现已不被使用。2.枚举根节点做可达性分析:目前主流的商用JVM都是通过可达性分析来判断对象是否可以被回收的。这个算法的基本思路是:通过一系列被称为「GCRoots」的根对象作为起始节点集,从这些节点开始,通过引用关系向下搜寻,搜寻走过的路径称为「引用链」,如果某个对象到GCRoots没有任何引用链相连,就说明该对象不可达,即可以被回收。那么什么是对象可达?GC Roots是原创 2021-03-22 21:11:52 · 584 阅读 · 0 评论 -
深入理解GC(分代收集算法)垃圾回收
GC(分代收集算法)垃圾回收JVM在进行GC时,并非每次都对上面三个内存区域一起回收,大部分时候回收的都是指新生代。因此GC按照回收的区域又分了两种类型, 一种是普通GC(Minor GC),一种是全局GC(major GC or Full GC)。MinorGC 和Full GC的区别普通GC(minor GC):只针对新生代区域的GC,指发生在新生代的垃圾回收动作,因为大多数Java对象存活率都不高,所以Minor GC非常频繁,一般回收速度也比较快。全局GC(major GC or Full原创 2021-03-22 16:00:56 · 1116 阅读 · 1 评论 -
深入理解JVM中的栈和堆
深入理解栈栈又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把 另一端称为栈底。其特性是先进后出。栈是线程私有的,生命周期跟线程相同,当创建一个线程时,同时会创建一个栈,栈的大小和深度都是固定的。方法参数列表中的变量,方法体中的基本数据类型的变量和引用数据类型的引用都存放在栈中,成员变量和对象本身不存放在栈中。运行时,成员函数的局部变量引用也存放在栈中。栈的变量随着变量作用域的结束而释放,不需要jvm垃圾回收机制回收。栈原创 2021-03-21 22:46:25 · 776 阅读 · 0 评论 -
初探JVM(JVM入门)
JVM初探1、JVM的位置及体系结构JVM的位置JVM的体系结构本地方法接口:JNI(Java Native Interface)2、堆(Heap)和栈(Stack)JAVA在程序运行时,在内存中划分5片空间进行数据的存储。分别是:1:寄存器。2:本地方法区。3:方法区。4:栈。5:堆。栈(Stack)内存用于存放基本类型的变量 (8种) 和对象的**引用变量(注意是引用变量)**以及实例的方法,用完就消失(栈的特性,先进后出)。当在一段代码块中定义一个变量时,java就在栈中为这个原创 2021-03-21 22:39:28 · 142 阅读 · 0 评论