
JVM
文章平均质量分 93
内存模型:梳理JVM的内存模型
内存溢出:常见的内存溢出的场景以及如何设计才能避免内存溢出
垃圾回收:熟悉现代JVM的垃圾回收机制,以及如何使用垃圾回收配置和策略
性能调优:根据JVM的内存模型、垃圾回收等原理实现JVM的性能调优,总结经验
类加载:java类是如何加载的,加载的模型、原理和启发
逆流°只是风景-bjhxcc
当你的才华还撑不起你的野心的时候,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来,历练;梦想,不是浮躁,而是沉淀和积累,只有拼出来的美丽,没有等出来的辉煌,机会永远是留给最渴望的那个人,学会与内心深处的你对话,问问自己,想要怎样的人生,静心学习,耐心沉淀,送给自己,共勉。
展开
-
【JVM】JVM性能调优详解
前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能调优做准备。这篇文章带领大家学习JVM性能调优的知识。原创 2023-01-03 16:23:00 · 4854 阅读 · 0 评论 -
【JVM】JVM 教程
定义: JVM (Java Virtual Machine 简称 JVM),亦可称之为 Java 虚拟机。它是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,它是 Java 最具吸引力的特性之一。虚拟机:从字面意义上来理解,虚拟机是一个虚拟化出来的计算机。原创 2023-01-02 20:41:04 · 2491 阅读 · 0 评论 -
【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
JVM对一些特定的异常类型做了Fast Throw优化,如果检测到在代码里某个位置连续多次抛出同一类型异常的话,C2会决定用FastThrow方式来抛出异常,而异常Trace即详细的异常栈信息会被清空。这种异常抛出速度非常快,因为不需要在堆里分配内存,也不需要构造完整的异常栈信息。生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志,问题是 堆栈信息呢?哪里报的NPE在哪?,省略异常栈信息从而快速抛出异常.原创 2023-11-21 20:01:01 · 1751 阅读 · 0 评论 -
【Jvm】Java类加载机制是什么?
例如类java.lang.Object,它存放在rt.jart之中.无论哪一个类加载器都要加载这个类.最终都是双亲委派模型最顶端的Bootstrap类加载器去加载.因此Object类在程序的各种类加载器环境中都是同一个类.相反.如果没有使用双亲委派模型.由各个类加载器自行去加载的话.如果用户编写了一个称“java.lang.Object”的类.并存放在程序的ClassPath中.那系统中将会出现多个不同的Object类.java类型体系中最基础的行为也就无法保证.应用程序也将会一片混乱.原创 2023-06-26 17:31:11 · 1473 阅读 · 2 评论 -
【JVM】日志分析工具--gcviewer的使用
问了一圈周边的同事或朋友,发现用gcviewer还是比较少,现在年轻一代的同学都是在生产直接用arthas或大盘,本地开发一般就是用自带visualvm或者直接用上节说的easyGC直接上传查看。原创 2023-06-15 15:46:56 · 2689 阅读 · 0 评论 -
【JVM 监控工具】JVisualVM的使用
JVisualVM是一个Java虚拟机的监控工具,要是需要对JVM的性能进行监控可以使用这个工具哦使用这个工具,你就可以监控到java虚拟机的gc过程了那么,这么强大的工具怎么下载呢?在JDK1.6后的版本是自带这个工具,它就在你的jdk的bin目录上如果是默认安装的JDK,一般就在C盘,Program Files的java目录,就会看到你的jdk版本,点进去之后打开bin这个文件夹,就可以看到这个软件了。原创 2023-06-15 07:15:00 · 2056 阅读 · 0 评论 -
【JVM 监控工具】性能诊断--JProfiler的使用
在 Java 的世界里,有许多诊断工具可供选择,既包括像 jmap、jstat 这样的简单命令行工具,又包括 JVisualvm、JProfiler 等图形化综合诊断工具,同时还有 SkyWalking、ARMS 这样的针对分布式应用的性能监控系统。下面分别对其进行介绍。原创 2023-06-14 17:19:09 · 15770 阅读 · 1 评论 -
【JVM 监控工具】使用JConsole监控进程、线程、内存、cpu、类情况
Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗。这个比较有价值,参看堆内存,非堆内存,内存池的状况总体内存的分配和使用情况以及不同的GC进行垃圾回收的次数和时间。可以手动进行GC查看内存变化。如果想监控分析系统项目代码里面某个方法的性能(如使用的CPU、GC情况),可以单独跑这个方法。try {原创 2023-06-14 15:41:07 · 7329 阅读 · 0 评论 -
【JVM】命令行工具的基本使用--JVM常用指令
jps(java process status tool), 用于查看java进程及相关信息,如果你想找到一个java进程的pid,可以使用jps命令代替linux的ps命令。jhat 用来分析jmap生成dump文件的命令, jhat内置了应用服务器,可以通过网页查看dump文件分析结果,jhat一般用于离线分析。jmap可以生成java程序的dump文件, 也可以查看堆内对象示例的统计信息、查看classLoader的信息以及finalizer队列。no options :输出所有的系统属性和参数。原创 2023-06-11 16:21:24 · 1447 阅读 · 0 评论 -
【JVM】JVM堆内存(heap)详解
JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。原创 2023-05-16 22:08:51 · 2217 阅读 · 0 评论 -
【面试】JVM内存模型
聊聊 JVM 内存模型候选人: 当然,JVM内存模型主要由以下几个部分组成:程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。每个线程都有一个独立的程序计数器,它的作用是记录当前线程执行的位置,以便在发生线程切换时恢复执行位置。Java虚拟机栈Java虚拟机栈是线程私有的,它的生命周期与线程相同。每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。当方法执行完毕后,对应的栈帧会被弹出,局部变量表等信息也会被销毁。原创 2023-05-16 10:28:03 · 427 阅读 · 0 评论 -
【jvm】JVM(三)JVM 垃圾回收算法详解(CMS、三色标记)
垃圾收集算法分为分代收集理论复制算法标记-清除算法标记-整理算法常见的垃圾回收器介绍SerialSerial OldParNewCMSParallel垃圾收集底层算法 - 三色标记漏标、多标问题增量更新原始快照读/写屏障。原创 2023-03-20 15:00:00 · 1282 阅读 · 0 评论 -
【JVM】JVM(二)JVM内存模型深度剖析与对象分配机制
jvm 内从模型一共分我堆、方法区、栈、本地方法栈、程序计数器对象分配内存空间有两种算法 指针碰撞、空连列表,保证对象分不出现并发问题采用的方法是CAS 和TLAB对象分配流程中 逃逸分析 标量替换以及栈上分配对象分配到Eden 区,Eden 区和Survior 区默认是 8:1:1对象进入老年代的几种机制大对象直接进入老年代长期存活的的对象进入老年代对象动态年龄判断机制老年代空间担保机制JVM 判断对象是否是垃圾算法的两种算法 ,引用计数和可达性分析算法。原创 2023-03-20 12:00:00 · 410 阅读 · 0 评论 -
【JVM】JVM(一)--聊聊JVM类加载机制
下面再带大家回顾一下我们上面讲的全部内容一条简单的java命令,底部会创建一个JVM虚拟机,JVM会创建一个引导类加载器,引导类加载器调用方法,然后得到加载器,调用loadClass的过程采用的是双亲委派机制进行加载,如果想要打破双亲委派机制,自己定义自己的类加载器。类加载的具体过程 分为加载、验证、准备、解析、初始化、使用、卸载。原创 2023-03-20 09:00:00 · 292 阅读 · 0 评论 -
【JVM】JVM 中的 Just-In-Time (JIT) 是如何工作的
Java 语言为了实现 “一次编写,处处运行”,编译器会将源码编译为一个中间语言 —— 字节码,之后通过 Java 虚拟机(JVM)将字节码翻译成对应的机器码执行。而这个翻译过程是解释执行的,相比静态编译的语言比如 C++ 会有一定的性能损失。原创 2023-03-20 06:15:00 · 614 阅读 · 4 评论