JVM
文章平均质量分 54
努力的土豆
这个作者很懒,什么都没留下…
展开
-
java对象加载过程
当JVM遇到一条new指令时,1、检验是否被加载过首先先去检查这个指令参数能否在常量池中定位到符号引用,并检验这个引用是否被类加载过(详细类加载过程我会在后边单独发博客讲解),如果这个类没有没被加载过那么执行加载过程。类加载过程完毕以后,2、分内存对象在堆内存中的布局分为三部分:1、对象头;2、实例数据;3、对齐填充,根据这三部分可以确定一个对象所需要的内存。分配内存有两种机制1、采用CAS配上失败重试保证更新操作的原子性;2、采用本地线程分配缓冲(TLAB)内存大小在类加载阶段已经被确定好原创 2022-05-13 21:03:47 · 592 阅读 · 0 评论 -
JVM调优
年轻代大小选择响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达年老代的对象。吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。年老代大小选择响应时间优先的应用:年老代使用并发收集器,所以其大小需要小心设置,一般要考...原创 2019-06-01 18:44:42 · 19770 阅读 · 0 评论 -
JVM 常见面试题进阶
1.1 Java 语言怎么实现跨平台的?我们编写的 Java 源码,编译后会生成一种 .class 文件,称为字节码文件。字节码不能直接运行,必须通过 JVM 翻译成机器码才能运行。JVM 是一个”桥梁“,是一个”中间件“,是实现跨平台的关键。Java 代码首先被编译成字节码文件,再由 JVM 将字节码文件翻译成机器语言,从而达到运行 Java 程序的目的。1.2 JVM 数据运行区,哪些会...原创 2019-06-02 17:57:56 · 22172 阅读 · 0 评论 -
JVM 常见面试题基础
基础1.1 JDK、 JRE、JVM 的关系是什么?什么是 JVM ?英文名称 ( Java Virtual Machine ),就是 JAVA 虚拟机, 它只识别 .class 类型文件,它能够将 class 文件中的字节码指令进行识别并调用操作系统向上的 API 完成动作。什么是 JRE ?英文名称( Java Runtime Environment ),Java 运行时环境。它主要...原创 2019-06-02 18:08:20 · 21849 阅读 · 1 评论 -
Parallel Scavenge无法和CMS共同使用
DefNewGeneration是default new generationParNewGeneration是parallel new generation 原本HotSpot VM里没有并行GC,当时就只有NewGeneration;后来准备要加入young gen的并行GC,就把原本的NewGe...原创 2019-05-01 11:35:15 · 22082 阅读 · 4 评论 -
G1收集器
总结 G1与CMS相比,他们都立足于低停顿时间,由于目前G1测试报告较少以及商用发行时间较短,所以CMS仍然是我目前的选择,但是随着Oracle对G1的不断改进,我相信G1是最终的胜利者。如果你现在采用的收集器没有任何问题,那就没有任何理由去选择G1,如果你的应用追求低停顿,那G1可以作为一个可尝试的选择,如果你的应用追求吞吐量,那G1并不会为你带...原创 2019-05-01 10:39:15 · 20224 阅读 · 0 评论 -
GC调优步骤
GC调优步骤打印GC日志根据日志得到关键性能指标分析GC原因,调优JVM参数ParallelGC调优关注点:吞吐量、最大停顿时间、最小停顿时间、平均停顿时间、YGC发生次数、FullGC发生次数。设置Metaspace大小-XX:MetaspaceSize=64M-XX:MaxMetaspaceSize=64M添加吞吐量和停顿时间参数-XX:GCTimeRatio=...原创 2019-10-03 15:07:04 · 413 阅读 · 0 评论