java虚拟机
文章平均质量分 91
xushiyu1996818
这个作者很懒,什么都没留下…
展开
-
jvm故障 负载异常排查
目录cpu使用率cpu负载load-averageCPU负载-多处理器CPU负载-多核处理器系统负荷的经验法则最佳观察时长linux查看load averagevmstatuptimetopsaq -qcpu负载的计算cpu负载分类负载的意义为什么压测时候会出现高负载,低CPU使用率的情况负载较高排查思路情况1:CPU高、Load高情况2:CPU低、Load高注意:本文参考 性能测试--cpu使用率和cpu负载区别 - ...原创 2022-01-30 15:32:38 · 445 阅读 · 0 评论 -
jvm故障 内存和GC异常处理总结
注意:本文参考 深入理解JVM虚拟机15:Java线上故障排查全套路总结_程序员黄小斜-CSDN博客内存内存问题排查起来相对比CPU麻烦一些,场景也比较多。主要包括OOM、GC问题 和 堆外内存。一般来讲,我们会先用free命令先来检查一发内存的各种情况。堆内内存内存问题大多还都是堆内内存问题。表象上主要分为OOM和StackOverflow。OOMJMV中的内存不足,OOM大致可以分为以下几种:unable to create new native thread..原创 2022-01-29 00:08:18 · 8360 阅读 · 2 评论 -
jvm故障 内存泄露和内存溢出总结
注意:本文参考 JAVA内存泄漏和内存溢出的区别和联系_weixin_34292402的博客-CSDN博客引起Java中内存泄露8种场景归纳,一定要避开这些!_公众号:肉眼品世界的博客-CSDN博客内存泄漏memory leak当某些对象不再被应用程序所使用,但是由于仍然被引用,而导致垃圾收集器不能释放(Remove,移除)他们。程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。内存泄漏的分类(按发生方式来分类)1 常发性..原创 2022-01-28 22:05:11 · 2852 阅读 · 0 评论 -
jvm故障 cpu,磁盘,网络异常总结
目录背景CPU 利用率高/飙升第一步:定位出问题的线程方法 a: 传统的方法方法 b:show-busy-java-threads方法 c: arthas thread后续情况一:发现使用CPU最高的都是GC 线程。情况二:发现使用CPU最高的是业务线程常见现象:频繁 GC回顾GC流程与查看GC日志GC 原因及定位常见现象:线程池异常常见问题恢复注意:本文参考了 arthas 排查内存溢出_Java应用线上排查总结_惊奇影像的博客-CSDN博...原创 2022-01-28 21:44:50 · 2365 阅读 · 1 评论 -
java new 一个对象的过程发生了什么
目录总体流程一、类加载过程(第一次使用该类)二、创建对象java对象在内存中的结构实例注意:本文参考java new一个对象的过程中发生了什么 - 沉默哥 - 博客园Java中new一个对象是一个怎样的过程?JVM中发生了什么? - 额是无名小卒儿 - 博客园java对象在内存中的结构(HotSpot虚拟机) - duanxz - 博客园总体流程1.当虚拟机遇到一条new指令时候,首先去检查这个指令的参数是否能在常量池中能否定位到一个类的符号引用(即类的带路...原创 2022-01-24 18:25:08 · 621 阅读 · 1 评论 -
JDK 监控和故障处理工具总结
目录JDK 命令行工具jps:查看所有 Java 进程jstat: 监视虚拟机各种运行状态信息jinfo: 实时地查看和调整虚拟机各项参数jmap:生成堆转储快照jhat: 分析 heapdump 文件jstack :生成虚拟机当前时刻的线程快照JDK 可视化分析工具JConsole:Java 监视与管理控制台Visual VM:多合一故障处理工具注意:本文参考 JDK 监控和故障处理工具总结 | JavaGuideJDK 命令行工具这些命令在 JDK..原创 2022-01-21 23:58:12 · 192 阅读 · 0 评论 -
类文件结构详解
目录概述Class 文件结构总结魔数(Magic Number)Class 文件版本号(Minor&Major Version)常量池(Constant Pool)访问标志(Access Flags)当前类(This Class)、父类(Super Class)、接口(Interfaces)索引集合字段表集合(Fields)方法表集合(Methods)属性表集合(Attributes)注意:本文参考 类文件结构详解 | JavaGuide概述...原创 2022-01-20 22:34:06 · 652 阅读 · 0 评论 -
java虚拟机图解
原创 2021-01-12 21:12:05 · 183 阅读 · 0 评论 -
java 类的卸载总结
类的生命周期当Sample类被加载、连接和初始化后,它的生命周期就开始了。当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就会结束生命周期,Sample类在方法区内的数据也会被卸载,从而结束Sample类的生命周期。由此可见,一个类何时结束生命周期,取决于代表它的Class对象何时结束生命周期。引用关系加载器和Class对象在类加载器的内部实现中,用一个Java集合来存放所加载类的引用。另一方面,一个Class对象总是会引用它的类加载器。调用Class原创 2020-07-09 16:05:32 · 2375 阅读 · 3 评论 -
java类加载机制面试总结
目录例子1 单类 类初始和对象初始例子2 祖孙 3类 父类成员变量例子3 祖孙 3类 实例化孙子例子4 单类 复杂分析方法论java类加载机制原理 https://blog.csdn.net/xushiyu1996818/article/details/102826295注意:本文参考了 https://www.cnblogs.com/chanshuyi/p/the_java_class_load_mechamism.html例子1 单类 类初始和对象初始...原创 2020-06-04 20:36:10 · 314 阅读 · 0 评论 -
JVM 调优参数总结
目录堆大小设置典型设置回收器选择吞吐量优先的并行收集器响应时间优先的并发收集器辅助信息常见配置汇总堆设置收集器设置垃圾回收统计信息并行收集器设置并发收集器设置调优总结年轻代大小选择年老代大小选择较小堆引起的碎片问题堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚...原创 2020-03-11 23:36:10 · 679 阅读 · 0 评论 -
java多线程 synchronized关键字与wait机制理论总结
目录简介自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁简介高效并发是JDK 1.6的一个重要主题,HotSpot虚拟机开发团队在这个版本上花费了 大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻址级锁(Lightweight Locking)、偏...原创 2019-11-07 22:08:53 · 2055 阅读 · 2 评论 -
java语言中的线程安全与实现方法
目录Java语言中的线程安全不可变绝对线程安全相对线程安全线程兼容线程对立线程安全的实现方法互斥同步非阻塞同步无同步方案可重入代码线程本地存储Java语言中的线程安全“线程安全”这个名称,但是如何找到一个不太拗口的概念来定义线程安全却 不是一件容易的事情,《Java Concurrency In Practice》的作者Brian Goetz...原创 2019-11-06 22:21:00 · 698 阅读 · 0 评论 -
java多线程 线程应用实例
目录线程的实现使用内核线程实现使用用户线程实现混合实现Java线程的实现Java线程调度状态转换线程的实现线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程 的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/0等), 又可以独立调度(线程是CPU调度的最基本单位)。主流的操作系统都提供了线程实现,Java语言则提供了在不同硬...原创 2019-11-05 21:46:35 · 1410 阅读 · 0 评论 -
java内存模型
目录简介主内存与工作内存内存间交互操作(8种及其规则)对于volatile型变量的特殊规则volatile的可见性volatile的禁止指令重排序优化volatile变量的特殊规则对于long和double型变量的特殊规则原子性、可见性与有序性先行发生原则简介.Java虚拟机规范中试图定义一种Java内存模型 (Java Memory Model,...原创 2019-11-03 23:09:19 · 266 阅读 · 0 评论 -
java虚拟机 类加载器
目录类加载器简介双亲委派模型破坏双亲委派模型类加载器简介虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进 制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取 所需要的类。实现这个动作的代码模块被称为"类加载器'。类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远 限千类加载阶段。对千任意一个类,都需......原创 2019-11-02 00:25:25 · 385 阅读 · 0 评论 -
类加载的时机与过程
目录简介类加载的时机类加载过程简介4种初始化情况被动引用类加载的过程加载验证文件格式验证元数据验证字节码验证符号引用验证准备解析类或接口的解析字段解析类方法解析接口方法解析初始化简介虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和 初始化,最终形成可以被虚拟机直接使用的Java类型,这......原创 2019-11-01 23:04:08 · 1083 阅读 · 0 评论 -
内存分配与回收策略
目录简介对象优先在Eden分配新生代GC (Minor GC)老年代GC (Major GC / Full GC)大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保总流程简介Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题: 给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向上讲,就是在...原创 2019-10-27 22:22:46 · 334 阅读 · 0 评论 -
java垃圾收集器
目录简介Serial 收集器ParNew 收集器并行(Parallel)并发(Concurrent)Parallel Scavenge 收集器Serial Old 收集器Parallel Old 收集器CMS收集器G1收集器简介如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现。Java 虚拟机规范中对垃圾收集器应该如何实现并没有任何.........原创 2019-10-27 16:41:28 · 3626 阅读 · 1 评论 -
垃圾收集算法与HotSpot算法细节
目录标记-清除算法复制算法标记-整理算法总体思想-分代收集算法标记-清除算法最基础的收集算法是“标记-清除”(Mark・Sweep)算法,如它的名字一样,算法分 为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回 收掉所有被标记的对象、它的标记过程其实在前一节讲述对象标记判定时已经基本介绍过 To之所以说它是最基础的收集算法,是因为......原创 2019-10-26 18:34:24 · 380 阅读 · 0 评论 -
java判断对象是否死亡及方法区的回收
目录简介引用计数算法根搜索算法java的4种引用强引用软引用弱引用虚引用判断死亡前的最后一站-finalize方法方法区的回收简介堆中几乎存放着Java世界中所有的对象实例,垃圾收集器在对堆进行回收前,第一 件事情就是要确定这些对象有哪些还“存活”着,哪些已经“死去”(即不可能再被任何途径使用的对象)。引用计数算法很多教科书判断对象是否...原创 2019-10-24 21:49:16 · 499 阅读 · 0 评论 -
java运行时内存区域及jvm中的对象
目录简介程序计数器Java虚拟机栈本地方法栈Java 堆方法区运行时常量池字面量String的intern方法直接内存对象访问句柄直接指针访问两者对比简介Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据 区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的 启动而存在,有些区域则...原创 2019-10-23 22:55:39 · 858 阅读 · 0 评论 -
java虚拟机与多线程总结
目录java虚拟机java内存管理机制虚拟机类加载机制java多线程java并发机制的的基础与底层原理java内存模型与线程java中的锁java并发容器与框架java中的原子操作类java中的并发工具类java中的线程池与executor框架java虚拟机java内存管理机制java运行时内存区域及对象访问 https://blo...原创 2019-10-22 20:58:30 · 824 阅读 · 0 评论