JAVA虚拟机浅谈
文章平均质量分 94
jvm相关知识
缘友一世
我是缘友一世博主,热爱技术、热衷于分享。我的博客专注于计算机科学和软件开发领域的学习和实践经验。在博客中,你可以找到各种编程语言的深入解析和实用技巧。我致力帮助读者更好地理解和应用技术。同时,我也关注技术行业的发展趋势和前沿研究。感谢您的关注和支持!部分文章内容辅助使用gpt等人工智能编辑,如果出现错误之处,请指正
展开
-
JVM高级篇之GC
ZGC 是一种可扩展的低延迟垃圾回收器。ZGC 在垃圾回收过程中,STW的时间不会超过一毫秒,适合需要低延迟的应用。支持几百兆到16TB 的堆大小,堆大小对STW的时间基本没有影响。ZGC降低了停顿时间,能降低接口的最大耗时,提升用户体验。但吞吐量不佳,所以如果服务关注QPS(每秒的查询次数)G1是比较不错的选择。原创 2024-04-04 08:39:35 · 1101 阅读 · 0 评论 -
GraalVM运行模式和企业级应用
GraalVM的JIT编译器在编译过程中使用了即时优化技术,包括方法内联、循环优化、逃逸分析等。这些优化技术可以提高代码的执行效率,并且针对不同的应用场景进行了优化,例如对于大型企业应用、嵌入式系统或数据密集型应用等。✓ 预热之后,通过内置的Graal即时编译器优化热点代码,生成比Hotspot JIT更高性能的机器码。JIT( Just-In-Time )模式 ,即时编译模式。-> 一次编写,到处运行。原创 2024-04-03 23:33:34 · 1054 阅读 · 0 评论 -
Linux(centos) 安装GraalVM
【代码】Linux(centos) 安装GraalVM。原创 2024-04-03 00:05:25 · 681 阅读 · 0 评论 -
JVM实战之性能调优[2](线程转储案例认识和分析)
参数可以输出JDK核心包中的方法及耗时。参数,只会显示耗时超过该毫秒值的调用。结束监控,重置arthas增强的对象。参数,最多显示该数值条数的数据。⚫ 所有监控都结束之后,输入。原创 2024-03-28 23:52:02 · 1009 阅读 · 0 评论 -
JVM实战之性能调优[1](概述和方法)
JVM(Java虚拟机)性能调优是一个复杂但重要的过程,目的是提高Java应用程序的性能和效率。JVM性能调优通常包括监控Java虚拟机的运行情况、识别性能瓶颈、调整JVM设置以及优化Java代码。JVM性能调优是一个持续的过程,需要根据应用的实际运行情况和性能目标进行。不同的应用和工作负载可能需要不同的调优策略。最好是以实际的性能监控数据为基础,逐步迭代优化。原创 2024-03-28 12:12:02 · 1040 阅读 · 0 评论 -
JAVA虚拟机实战篇之GC调优[2](解决GC问题的手段)
【代码】JAVA虚拟机实战篇之GC调优[2](解决GC问题的手段)原创 2024-03-28 00:03:41 · 1118 阅读 · 0 评论 -
JAVA虚拟机实战篇之GC调优[1](GC调优基知、方法、工具和常见GC模式)
【代码】JAVA虚拟机实战篇之GC调优[1](GC调优基知、方法、工具和常见GC模式)原创 2024-03-10 15:16:55 · 1088 阅读 · 0 评论 -
JAVA虚拟机实战篇之内存调优[5](诊断和解决问题-两种方式&总结)
内存泄漏(memory leak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存溢出指的是内存的使用量超过了Java虚拟机可以分配的上限,最终产生了内存溢出OutOfMemory的错误。原创 2024-03-08 23:29:48 · 940 阅读 · 0 评论 -
JAVA虚拟机实战篇之内存调优[4](内存溢出问题案例)
hutool提供的BigExcelWriter减少内存开销(推荐)使用阿里巴巴easy excel,对内存进行大量的优化(推荐)使用poi的SXSSFWorkbook(不推荐)原创 2024-03-08 23:02:55 · 1096 阅读 · 0 评论 -
JAVA虚拟机实战篇之内存调优[3](诊断问题:MAT工具分析堆内存快照)
深堆的大小表示该对象如果可以被回收,能释放多大的内存空间。点击details即可查看到详细的内容。打开保存到的dump文件。截取当前线程栈分析问题。原创 2024-03-08 16:48:07 · 1288 阅读 · 0 评论 -
JAVA虚拟机实战篇之内存调优[2](产生内存溢出两大原因:代码和并发请求)
尽量减少将对象长时间的保存在静态变量中,如果不再使用,必须将对象删除(比如在集合中)或者将静态变量设置为null。Spring的Bean中不要长期存放大对象,如果是缓存用于提升性能,尽量设置过期时间定期失效。使用单例模式时,尽量使用懒加载,而不是立即加载。原创 2024-03-07 23:07:25 · 879 阅读 · 0 评论 -
JAVA虚拟机实战篇之内存调优[1](内存泄露和溢出概念、常见场景、解决思路)
内存溢出是指程序在运行过程中申请的内存超出了JVM(Java虚拟机)所能提供的最大内存限制,导致无法继续分配新的对象,最终导致程序崩溃。原创 2024-03-07 00:18:51 · 1234 阅读 · 0 评论 -
Graal编译器和GraalVM虚拟机
它将字节码指令解释为具体的机器指令或直接通过即时编译技术将字节码编译成本地机器代码执行。执行引擎包括以下几个主要组件。时(JIT-justin time)编译器作用。安装Visual Studio编译为平台码所用。配置环境变量:请打开自己的机器目录进行查看。解释器启动时间较短,时编译器启动时间较长。JVM(Java虚拟机)的执行流程包括。它由三个主要的类加载器组成。,主要包括以下几个部分。原创 2024-02-05 14:40:31 · 1415 阅读 · 0 评论 -
jvm基础篇之垃圾回收[3](垃圾回收器)
分代GC代取划分原因垃圾回收器组合关系年轻代-Serial垃圾回收器老年代-SerialOld垃圾回收器年轻代-ParNew垃圾回收器老年代-CMS垃圾回收器年轻代-Parallel Scavenge垃圾回收器老年代-Parallel Old垃圾回收器G1垃圾回收器G1内存结构G1回收方式年轻代回收混合回收FULL GCG1执行流程参数设置总结进行垃圾回收的内存类型常见的引用类型常见的垃圾回收算法常见的垃圾回收器原创 2024-02-03 10:50:33 · 1244 阅读 · 0 评论 -
jvm基础篇之垃圾回收[2](垃圾回收算法)
【代码】jvm基础篇之垃圾回收[2](垃圾回收算法)原创 2024-02-02 13:28:18 · 952 阅读 · 0 评论 -
jvm基础篇之垃圾回收[1](方法区、堆回收)
垃圾回收类型、手动垃圾回收:C/C++的内存管理、自动垃圾回收:Java的内存管理、自动垃圾回收应用场景、不同垃圾回收对比、线程不共享部分的回收、方法区的回收、手动触发回收、堆回收、两种判断方法、引用计数法、查看垃圾回收日志、可达性分析法、GC Root对象类型、可达性算法案例分析、查看GC Root、五种对象引用、强引用、软引用、执行过程、SoftReference对象的回收、软引用编程案例、软引用使用场景-缓存、弱引用、虚引用(不常用)、终结器引用(不常用)原创 2024-02-01 13:30:35 · 1153 阅读 · 0 评论 -
JVM之java内存区域[2](堆、方法区、直接内存)
一 堆1.1 java堆1.2 模拟堆区的溢出1.3 arthas中堆内存相关的功能1.4 设置大小二 方法区2.1 方法区简介2.2 补充:字符串常量池和运行时常量池2.3 方法区的大小设计2.4 arthas中查看方法区2.5 模拟方法区的溢出2.7 StringTable的练习题三 神奇的intern四 静态变量的存储五 直接内存5.1 直接内存简介5.2 设置直接内存大小六 jvm内存总结原创 2024-01-22 22:22:48 · 1118 阅读 · 0 评论 -
JVM之java内存区域[1](程序计数器、栈)
零 运行时数据区一 程序计数器1.1 加载阶段1.2 执行阶段1.3 多线程情况二 栈2.1 java虚拟机栈2.2 java虚拟机栈帧的组成2.2.1 局部变量表2.2.2 操作数栈2.2.3 帧数据2.3 栈内存溢出2.4 设置帧大小2.5 本地方法栈原创 2024-01-20 22:41:15 · 1171 阅读 · 0 评论 -
JVM之类加载器
一个Tomcat程序中是可以运行多个Web应用的,如果这两个应用中出现了相同限定名的类,比如Servlet类,Tomcat要保证这两个类都能加载并且它们应该是不同的类。如果不打破双亲委派机制,当应用类加载器加载Web应用1中的MyServlet之后,Web应用2中相同限定名的MyServlet类就无法被加载。Tomcat使用了自定义类加载器来实现应用之间类的隔离。每一个应用会有一个独立的类加载器加载对应的类。先来分析ClassLoader的原理,ClassLoader中包含了4个核心方法。原创 2023-11-11 00:19:05 · 1118 阅读 · 0 评论 -
JVM类的声明周期
Java类的生命周期包括以下阶段:加载(Loading):当Java程序需要使用某个类时,JVM会检查该类是否已经被加载,如果没有加载,JVM会从磁盘中读取该类的字节码文件并创建一个Class对象,然后将该Class对象存放在方法区中。验证(Verification):在加载类的过程中,JVM会对该类的字节码进行验证,以确保它符合Java虚拟机规范,不会对虚拟机造成安全上的威胁。原创 2023-11-04 23:58:57 · 511 阅读 · 0 评论 -
JVM字节码文件浅谈
本地方法接口(Native Interface):提供了与本地代码交互的接口,可以使用C、C++等语言编写本地代码,并通过JNI(Java Native Interface)与Java程序交互。运行时数据区(Runtime Data Area):JVM在运行时会将内存划分为不同的数据区域,包括方法区、堆、栈、程序计数器等,用于存储程序运行时所需要的数据。Java标准库(Java API):提供了大量的类和接口,包括I/O、网络、集合、线程等常用功能。原创 2023-11-04 18:53:02 · 443 阅读 · 0 评论 -
JVM修炼印记之初识
Java虚拟机(Java Virtual Machine,JVM)是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心,可以在不同的操作系统和硬件平台上运行Java程序。Java程序员可以使用Java编译器将Java源代码编译成字节码,然后在任何支持JVM的平台上运行。JVM负责将Java源代码编译成字节码,然后执行字节码,将其转换为操作系统可以理解的机器码。Java语言如果不做任何优化,性能不如C、C++等语言。Java需要实时解释,主要是为了支持跨平台特性。原创 2023-11-02 00:00:13 · 630 阅读 · 0 评论