
jvm
文章平均质量分 69
jvm
Andy_Health
永远不要停止奔跑。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线上紧急问题,如宕机、卡顿、bug等,如何快速反应和解决,具体解决方案
1原创 2023-04-14 09:08:30 · 251 阅读 · 0 评论 -
Arthas
Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断 线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthas curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 选择1,进入监控程序 root@N-B2B-API01:/usr/local/arth原创 2022-05-18 13:57:19 · 238 阅读 · 0 评论 -
jvm导出dump日志,分析内存情况
1. 查看内存情况 top top pid=18426 占用内存比例很高 2. 导出dump日志 jmap -dump:format=b,file=heap.hprof 18426 当前目录: 3. 下载到本地,使用MAT打开进行分析 设置MAT内存大小: 几种图表现形式: 内存泄露检测: 这里一个名称叫做 king-thread 的线程,持有了超过 99% 的对象,数据被一个 HashMap 所持有。 这个就是内存泄漏的点,因为我代码中对线程进行了标识,所以像阿里等公司的编码规范中原创 2021-07-20 16:17:11 · 8345 阅读 · 1 评论 -
OOM导致JVM退出?
static class OOMObject { } // 为快速发生oom,设置堆大小; VM args: -Xms20m -Xmx20m public static void main(String[] args) throws InterruptedException { new Thread(() -> { List<OOMObject> list = new ArrayList<>(); while (true) {原创 2021-04-01 14:34:55 · 537 阅读 · 2 评论 -
ThreadLocal知识点
1. ThreadLocal 和 ThreadLocalMap 是什么? 简单来说,ThreadLocal 是一种操作与线程绑定的共享对象的工具,通过ThreadLocal可以将一些对象保存在线程上,实现同线程不同方法之间的对象共享。线程的上下文由 ThreadLocalMap 组成,它是 ThreadLocal 的静态内部类,存储着线程共享对象。 一般来说,我们无需显式创建ThreadLocalMap,也无需为装入ThreadLocalMap 对象设 key 值,因为在 set 方法执行时会创建 Thre转载 2020-11-09 11:00:55 · 481 阅读 · 0 评论 -
JVM - MAT进行内存泄漏检测
MAT MAT 工具是基于Eclipse 平台开发的,本身是一个Java 程序,是一款很好的内存分析工具,所以如果你的堆快照比较大的话,则需要一台内存比较大的分析机器,并给MAT 本身加大初始内存,这个可以修改安装目录中的MemoryAnalyzer.ini 文件。 概要 柱状图 MAT 中的Incoming/Outgoing References 在柱状图中,我们看到,其实它显示的东西跟jmap –histo 非常相似的,也就是类、实例、空间大小。 但是MAT 有一个专业的概念,这个可以显示对象的原创 2020-09-01 16:06:25 · 402 阅读 · 0 评论 -
JVM - 线上节点死机应该怎么处理?linux线上问题排查,jvm命令查找
jvm原创 2020-04-24 15:57:04 · 435 阅读 · 0 评论 -
JVM-性能调优
内存溢出 内存溢出的原因:程序在申请内存时,没有足够的内存空间。 内存溢出的几种方式: 1.栈溢出:方法死循环递归调用(StackOverflowError)、不断建立线程(OurOfMemoryError) 2.堆溢出:不断创建对象,分配对象大于最大对的大小(OurOfMemoryError) 3.直接内存:分配的本地内存大小大于JVM的限制 4.方法区溢出:在经常动态生产大量Class的应用中...原创 2020-03-12 11:04:37 · 249 阅读 · 0 评论 -
JVM-双亲委派模型
对于任意一个类,都需要由加载它的类加载器和类本身一同确立其在java虚拟机中的唯一性。 启动类加载器:C++语言实现,是虚拟机自身的一部分,另一种就是所有其他类的类加载器,这些加载器由java实现,独立于虚拟机外部,并且全部继承自抽象类java.lang.ClassLoader。 扩展类加载器:这个加载器由sun.misc.Launcher$ExtClassLoader实现,它负责加载<...原创 2020-03-11 10:27:25 · 183 阅读 · 0 评论 -
JVM-垃圾回收算法与垃圾回收器
判断对象是否存活 1.引用计数法 给对象一个引用计数器,当对象加一个引用时计数器加1,引用失效减1,引用为0的对象可被回收。 优点:快,方便,实现简单 缺点:对象相互引用时(A.instance=B同时B.instance=A)很难判断是否该回收 2.可达性分析(Java中使用) “GC Roots”向下搜索,走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有...原创 2020-03-10 19:00:08 · 385 阅读 · 0 评论 -
JVM-对象分配
划分对象两种方式: 1.指针碰撞: Java堆内存规整的情况下使用 2.空闲列表:Java堆内存不规整的情况下使用 JVM中分配对象: 本地线程分配缓冲 Thread Local Allocation Buffer, TLAB (Eden 1%) 栈----堆中预先分配一块很小私有区域。 CAS比较和交换,确保原子性问题。 对象内存布局 在HostSpot虚拟机中,对象在内存中存储布局可以分为3...原创 2020-03-10 17:59:24 · 376 阅读 · 0 评论 -
JVM-内存结构
jdk-jre-jvm 区别 jdk包含jre,jre包含jvm Jdk是一个合集,包含一些编译工具 Jre是(class)Java运行环境,包含一些插件,包含jvm Jvm 是最基础的,做翻译的,class翻译成操作系统上的指令(0101) 运行时数据区 线程私有:程序计数器、虚拟机栈、本地方法栈 线程共享:堆、方法区 程序计数器(唯一不会OOM的区域):记录指向当前线程正在执行的字节码指令...原创 2020-03-10 17:17:57 · 195 阅读 · 0 评论