JVM
文章平均质量分 89
jvm是运行在操作系统之上,有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统的虚构出来的计算机。
科技颠覆未来
金融+科技
Think-持续重构知识体系框架
展开
-
JVM常见interview
1. 内存模型以及分区,需要详细到每个区放什么。栈区:栈分为java虚拟机栈和本地方法栈重点是Java虚拟机栈,它是线程私有的,生命周期与线程相同。每个方法执行都会创建一个栈帧,用于存放局部变量表,操作栈,动态链接,方法出口等。每个方法从被调用,直到被执行完。对应着一个栈帧在虚拟机中从入栈到出栈的过程。通常说的栈就是指局部变量表部分,存放编译期间可知的8种基本数据类型,及对象引用和指令地址。局部变量表是在编译期间完成分配,当进入一个方法时,这个栈中的局部变量分配内存大小是确定的。会有转载 2022-02-22 11:43:04 · 123 阅读 · 0 评论 -
触发JVM进行Full GC的情况及应对策略
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但非绝对的。Major GC的速度一般会比Minor GC慢10倍以上。下边看看有那种情况触发JVM进行F.原创 2022-02-22 11:04:36 · 1045 阅读 · 0 评论 -
Java虚拟机详解04----GC算法和种类【重要】
本文主要内容:GC的概念 GC算法 引用计数法(无法解决循环引用的问题,不被java采纳) 根搜索算法 现代虚拟机中的垃圾搜集算法: 标记-清除 复制算法(新生代) 标记-压缩(老年代) 分代收集Stop-The-World一、GC的概念:GC:Garbage Collection 垃圾收集 1960年 Lisp使用了GC Java中,GC的对象是Java堆和方法区(即永久区)我们接下来对上...转载 2022-02-17 20:09:05 · 175 阅读 · 0 评论 -
Java虚拟机详解05----垃圾收集器及GC参数
本文主要内容:堆的回顾 串行收集器 并行收集器 CMS收集器零、堆的回顾:新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上,最后清理掉Eden和刚才用过的Survivor空间。HotSpot虚拟机默认Eden和Survivor的大小比例是8:转载 2022-02-21 11:01:52 · 655 阅读 · 0 评论 -
Java JVM启动参数
java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用; 标准参数中比较有用的: verbose-verbose:class输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。-verbose:gc...转载 2022-02-14 15:52:50 · 2673 阅读 · 0 评论 -
Java虚拟机详解03----常用JVM配置参数
本文主要内容:Trace跟踪参数 堆的分配参数 栈的分配参数零、在IDE的后台打印GC日志:既然学习JVM,阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。既然如此,那么在IDE的控制台打印GC日志是必不可少的了。现在就告诉你怎么打印。(1)如果你用的是Eclipse,打印GC日志的操作如下:在上图的箭头处加上-XX:+PrintGCDetails这句话。于是,运行程序后,GC日志就可以打印出来了:(2)如果你用的转载 2022-02-14 16:58:47 · 235 阅读 · 0 评论