JVM
静看星辰变
我要成为像凯撒一样的男人
展开
-
JVM性能监控和故障处理的指令、工具
目录指令jpsjstatjinfojmapjstack可视化故障处理工具jconsoleVisualVM指令jps描述:可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID。是最常用的功能之一,因为其它命令需要通过它来查询要监控的虚拟机进程的ID。 命令格式:jps [options] [hostid]主要选项:-q 只输出LVMID 省略主类的名称;-m 输出虚原创 2020-11-12 11:41:30 · 259 阅读 · 2 评论 -
JVM中各内存区域溢出原因及解决办法
Java堆溢出原因:创建的对象的总容量超过了堆的最大容量。 溢出类型:java.lang.OutOfMemoryError。 解决方法:排查是因为内存溢出还是内存泄漏导致的:通过性能监测工具如jconsole,获取堆内存快照,查看导致溢出的对象是不是必要的,不是的话就是泄漏,是的话就是溢出。 内存泄漏:查看导致溢出的对象的GC ROOTS引用链,根据引用链找到具体的内存泄漏的位置,进行修改。 内存溢出:检查JVM的堆参数设置(-Xmx:JVM最大内存与-Xms:启动初始内存),看是否还有向上调原创 2020-11-09 20:57:16 · 2326 阅读 · 0 评论 -
【JVM】Java 关于强引用,软引用,弱引用和虚引用的区别与用法
目录一、引用的概念二、引用到底有什么作用三、弱引用的 GC 实战四、再理解 ThreadLocalMap 的弱引用五、ReferenceQueue 引用队列六、应用场景总结内容来自:https://blog.csdn.net/junjunba2689/article/details/80601729 https://blog....转载 2020-03-22 20:33:27 · 605 阅读 · 0 评论 -
JVM的几种常量池
这几天看JVM常量池的内容,看的我头都大了,因为jdk版本更新很快,而很多博客在介绍时并没有说明他了解的JVM规范是哪个版本的,所以看到了各式各样信息,搞得我都不敢看了。于是乎就想看看官方的文档,虽然看得有点艰难,但心里还是踏实。这里我学习的版本是jdk8,只是把自己看到的一些东西记录下来,有兴趣的可以参考参考。TheJava SE 8 Language Specification:http...原创 2020-01-14 21:14:08 · 2692 阅读 · 1 评论 -
【Java虚拟机】JVM字节码指令
JVM官方文档JVM虚拟机规范对JDK8的指令集介绍地址为:https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5加载和存储指令加载和存储指令用于将数据从栈帧的本地变量表和操作数栈之间来回传递:将一个本地变量加载到操作数栈的指令::iload、iload_<n>、lload、lload_<n>、flo...原创 2020-01-13 21:38:16 · 147 阅读 · 0 评论 -
【JVM】移除永久带——原文部分翻译
原文链接:http://openjdk.java.net/jeps/122。摘要从HotSpot中移除永久代,进而省去了以往需要调整永久代大小的工作。目标将类元数据(class meta-data)的共享扩展到应用程序类,降低类元数据的所需内存,启动类元数据的异步收集。成功标志类元数据、字符串常量(interned strings)和类静态变量会从永久代转移到java堆或本...原创 2019-09-16 22:17:17 · 136 阅读 · 0 评论 -
【Java虚拟机】类加载机制
目录前言概述类加载的时机类加载的过程加载验证准备解析初始化类加载器类的唯一性判定双亲委派模型前言该文章是本人看了《深入理解java虚拟机》一书后的知识点总结,并不是原理介绍。所以想通过博客来学习JVM的兄弟们还是别看了,建议直接看书,更详细;但如果你已经看过书了,只是想复习知识点,尤其是应对面试(本人写就是为了此目的),那么可以看看本文。...原创 2019-09-15 21:38:08 · 95 阅读 · 0 评论 -
【JVM】垃圾收集系统
目录前言对象可回收判定引用计数算法可达性分析算法生存还是死亡标记一:救赎者筛选标记二:得到救赎垃圾收集算法标记—清除算法复制算法标记—整理算法分代收集算法如何分代垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器...原创 2019-09-14 21:54:08 · 962 阅读 · 0 评论 -
【JVM】JVM内存区域划分
JVM所管理的内存包括以下几个运行时数据区域:上图来源于:https://blog.csdn.net/bruce128/article/details/79357870堆是由所有线程共享的一块区域。 是JVM中所管理的内存中最大的一块,几乎所有的对象实例都在这里分配内存。 堆的大小可以通过-Xmx和-Xms来指定,既可以固定也可以是可扩展的。当堆没有足够内存来分配实例并...原创 2019-09-14 22:02:49 · 148 阅读 · 0 评论