JVM
文章平均质量分 60
编程周记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM从入门到精通(超详细汇总所有JVM知识点,包括面试题)
目录 JVM内存结构 栈 堆 垃圾回收 判断一个对象死亡的方法 垃圾回收算法 垃圾收集器 JVM内存结构 JVM内存空间分为五部分,分别是:方法区、堆、Java虚拟机栈、本地方法栈、程序计数器。 线程共有:方法区、堆 线程私有:虚拟机栈、本地方法栈、程序计数器 方法区:常量、静态变量、类信息、运行时常量池(字面量、符号引用)。 堆主要存放的是数组、类的实例对象、字符串常量池等。 栈存放变量,包括基本类型变量,局部变量,对象的引用(地址)。 运行本地方法(可能不是java实原创 2021-02-27 00:43:13 · 441 阅读 · 2 评论 -
JVM分析:String a = “123“;String b = “123“;a==b的结果是什么?为什么?
String a = "123"; String b = "123"; a==b的结果是 true String c = new String("123"); a==c的结果是false String a="123";//会把字符串放到“字符串常量池”中, 此时 常量池中有 “123”,变量a指向常量池中“123”的地址。 String b="123";//JVM会先寻找常量池中是否有内容“123”,发现有之后,就把变量b指向常量池中的同一个地址。 因此,==比较的是地址,他们地址都是相同的,即..原创 2021-02-19 22:40:10 · 2022 阅读 · 0 评论 -
JVM实践(二)JVM监控及诊断
JVM实践(二)JVM监控及诊断 一、jps命令 打印正在运行时的java进程信息。(类似linux中的ps) -l 打印模块名以及包名 -v 打印传递给JVM的参数 -m 打印传递给主类的参数 二、jstat命令 打印目标 Java 进程的性能数据。 格式: jstat -[参数] [java进程号] [打印间隔] [最大打印次数]。其中ja...原创 2019-04-20 23:09:37 · 263 阅读 · 0 评论 -
JVM实践(三)JVM调优案例
JVM实践(三)JVM调优案例 大部分的JVM调优,目的是降低GC次数,减少GC时间(STW耗时占大部分)。 从原因分析上 FULL GC频率高。正常10天半个月可能FULL GC一次,如果一天两三次就不正常了。 可能的原因: (1)内存泄漏,属于代码问题。 首先分析大对象,找到它,修复它,可能是代码上的缺陷,又或者是程序设计上漏洞。 (2)元空间(metaspace,J...原创 2019-04-21 00:32:15 · 498 阅读 · 0 评论 -
JVM入门(一)栈和堆
JVM入门(一)栈和堆 (1)栈 任何软件运行都要开辟内存空间。JVM开辟五个内存区域,分别是栈,堆,方法区,本地方法区,寄存器。栈存放变量,包括基本类型变量,局部变量,对象的引用(地址)。 栈的存取速度比堆快。由系统自动分配与回收。 栈中的区域是连续的,空间有大小限制,超过阈值抛错:StackOverflowError。 栈帧:每个方法调用都会创建一个栈帧,用于存放局部变量表。方法执行完虚拟...原创 2019-04-18 22:18:15 · 318 阅读 · 0 评论 -
JVM入门(二)堆区域划分和垃圾回收策略
JVM入门(二)垃圾回收策略 一、内存分配与垃圾回收相关概念 (1)堆区域划分 堆:年轻代+老年代 年轻代:1个Eden区+2个Survivor区 ,大小比例是 8:1。 对象在Eden区创建,每次只使用Eden区和一个Survivor区,这两个区满了后会放到空白区(MINOR GC)。由于98%对象朝生夕死,因此不会不够用,就算不够用也会转到老年代。 (2)年轻代 年轻代回收机制:E...原创 2019-04-18 22:49:48 · 596 阅读 · 0 评论 -
JVM入门(三)认识finalize
JVM入门(三)认识finalize finalize是Object对象自带的方法 1.GC回收前会调用一次finalize方法,并且相同的对象只调用一次finalize方法。(比如你调用了两次System.GC,但只会执行一次finalize方法) 2.JVM创建一个低优先级的线程调用finalize,因此很有可能对象已经回收了,finalize还没执行完毕。即不保证执行顺序。 3.Syst...原创 2019-04-19 15:45:26 · 261 阅读 · 0 评论 -
JVM实践(一)参数调优
JVM实践(一)参数调优 对于实践党来说,学习理论真的很枯燥无味,完成了JVM相关的知识储备《JVM入门(一)栈和堆》系列,就要开始实践了,不能停留于理论知识。学习完堆、栈,以及年轻代,老年代,垃圾收集器等知识。但是学完以后,参数在哪里调?参数调整有什么效果?这些都不得而知,或者零零散散看过一些参数,但没有集中到一处,空有一身理论,却无法施展,就像你背了一堆的菜谱,却不动手做菜,总觉得差...原创 2019-04-20 12:57:47 · 274 阅读 · 0 评论
分享