深入理解JVM
文章平均质量分 71
JVM调优,JVM原理
Walter Sun
我小时候的理想是做一名科学家,用梦想改变世界。资深匠心码农 阿里扫地僧 Java天花板 IT极客 篮球梦 绘画乐器
展开
-
了解一下:比JDK最高快170倍,高性能多语言序列化框架Fury中,用到的Janino编译器
Janino是一种Java编译器,它可以在运行时动态地将Java源代码编译成Java字节码,然后执行该字节码。Janino可以在不需要预先编译Java源代码的情况下,动态地生成和加载类,从而使得Java程序具有更强的灵活性和可扩展性。动态编译:Janino可以在运行时动态地将Java源代码编译成Java字节码,从而避免了预先编译的步骤。轻量级:Janino编译器非常轻量级,只有几百KB大小,可以很容易地集成到Java应用程序中。原创 2023-07-17 19:07:43 · 685 阅读 · 0 评论 -
IntelliJ IDEA——插件之java内存分析工具(JProfiler)
1.marketplace中搜索jprofiler2.installed后需要去jprofiler官网安装jprofiler可执行客户端官网地址:https://www.ej-technologies.com/products/jprofiler/overview.html3.下载完后运行exe文件,安装jprofiler,安装过程中需要的license如下:jprofiler11L-J11-Everyone#speedzodiac-327a9wrs5dxvz#463a59A-J11-Eve原创 2020-10-09 20:26:20 · 3837 阅读 · 1 评论 -
JVM性能监测及调优(5)
内存持续上升,我该如何排查问题?我想你肯定遇到过内存溢出,或是内存使用率过高的问题。碰到内存持续上升的情况,其实我们很难从业务日志中查看到具体的问题,那么面对多个进程以及大量业务线程,我们该如何精准地找到背后的原因呢?常用的监控和诊断内存工具工欲善其事,必先利其器。平时排查内存性能瓶颈时,我们往往需要用到一些 Linux 命令行或者 JDK 工具来辅助我们监测系统或者虚拟机内存的使用情况,下面我就来介绍几种好用且常用的工具。Linux 命令行工具之 top 命令top 命令是我们在 Linux 下原创 2020-06-23 15:29:35 · 243 阅读 · 0 评论 -
JVM性能监测及调优(4)
如何优化JVM内存分配?JVM 调优是一个系统而又复杂的过程,但我们知道,在大多数情况下,我们基本不用去调整 JVM 内存分配,因为一些初始化的参数已经可以保证应用服务正常稳定地工作了。但所有的调优都是有目标性的,JVM 内存分配调优也一样。没有性能问题的时候,我们自然不会随意改变 JVM 内存分配的参数。那有了问题呢?有了什么样的性能问题我们需要对其进行调优呢?又该如何调优呢?JVM 内存分配性能问题谈到 JVM 内存表现出的性能问题时,你可能会想到一些线上的 JVM 内存溢出事故。但这方面的事故原创 2020-06-23 15:28:48 · 253 阅读 · 0 评论 -
JVM性能监测及调优(3)
如何优化垃圾回收机制?我们知道,在 Java 开发中,开发人员是无需过度关注对象的回收与释放的,JVM 的垃圾回收机制可以减轻不少工作量。但完全交由 JVM 回收对象,也会增加回收性能的不确定性。在一些特殊的业务场景下,不合适的垃圾回收算法以及策略,都有可能导致系统性能下降。面对不同的业务场景,垃圾回收的调优策略也不一样。例如,在对内存要求苛刻的情况下,需要提高对象的回收效率;在 CPU 使用率高的情况下,需要降低高并发时垃圾回收的频率。可以说,垃圾回收的调优是一项必备技能。我们就把这项技能的学习进行原创 2020-06-23 15:27:55 · 201 阅读 · 0 评论 -
IO模型
如何解决高并发下I/O瓶颈什么是 I/OI/O 是机器获取和交换信息的主要渠道,而流是完成 I/O 操作的主要方式。在计算机中,流是一种信息的转换。流是有序的,因此相对于某一机器或者应用程序而言,我们通常把机器或者应用程序接收外界的信息称为输入流(InputStream),从机器或者应用程序向外输出的信息称为输出流(OutputStream),合称为输入 / 输出流(I/O Streams)。机器间或程序间在进行信息交换或者数据交换时,总是先将对象或数据转换为某种形式的流,再通过流的传输,到达指定机器原创 2020-06-12 09:53:25 · 244 阅读 · 0 评论 -
JVM性能监测及调优(2)
深入JVM即时编译器JIT,优化Java编译说到编译,我猜你一定会想到 .java 文件被编译成 .class 文件的过程,这个编译我们一般称为前端编译。Java 的编译和运行过程非常复杂,除了前端编译,还有运行时编译。由于机器无法直接运行 Java 生成的字节码,所以在运行时,JIT 或解释器会将字节码转换成机器码,这个过程就叫运行时编译。类文件在运行时被进一步编译,它们可以变成高度优化的机器代码,由于 C/C++ 编译器的所有优化都是在编译期间完成的,运行期间的性能监控仅作为基础的优化措施则无法进行原创 2020-06-11 15:39:27 · 263 阅读 · 0 评论 -
JVM性能监测及调优(1)
JVM内存模型为什么 JVM 在 Java 中如此重要?首先你应该知道,运行一个 Java 应用程序,我们必须要先安装 JDK 或者 JRE 包。这是因为 Java 应用在编译后会变成字节码,然后通过字节码运行在 JVM 中,而 JVM 是 JRE 的核心组成部分。JVM 不仅承担了 Java 字节码的分析(JIT compiler)和执行(Runtime),同时也内置了自动内存分配管理机制。这个机制可以大大降低手动分配回收机制可能带来的内存泄露和内存溢出风险,使 Java 开发人员不需要关注每个对象原创 2020-06-11 10:47:44 · 257 阅读 · 0 评论