
JVM
文章平均质量分 62
JVM 相关的概念内容
龙大.
初心未改,方得始终!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Jvm 元空间大小分配原则
JVM元空间(Metaspace)大小分配不是按物理内存固定比例,而是动态管理。默认无上限,受限于可用物理内存和MaxMetaspaceSize参数设置。JVM根据类加载需求动态扩展元空间,直到达到设定上限或系统内存耗尽。建议生产环境中设置MetaspaceSize和MaxMetaspaceSize参数,如128M初始值和512M最大值,防止内存过度占用。同时需监控元空间使用,避免类加载过多导致OOM。分配原则是按需动态扩展,最终受参数和物理内存双重限制。原创 2025-05-30 12:59:23 · 1016 阅读 · 0 评论 -
Java dump 的流程和常用方法
在 Java 中,生成内存转储(dump)是一种诊断手段,用于在 Java 进程遇到问题(如内存泄漏、性能下降)时捕获 JVM 的运行时数据。以下是生成 Java dump 的流程和常用方法。原创 2024-09-24 09:38:06 · 1181 阅读 · 0 评论 -
如何快速定位Java那个线程那个代码CPU使用高
在 Linux 环境中,你可以通过以下步骤快速查询 Java 应用程序中哪个线程使用 CPU 较高以及对应的代码。这个过程一般包括使用一些命令行工具和 Java 提供的工具。原创 2024-09-24 09:34:24 · 1032 阅读 · 0 评论 -
在同一个类加载器下,对同一类进行多次反射操作会共享已加载的元数据信息吗?
在同一个类加载器下,对同一类进行多次反射操作会共享已加载的元数据信息,而不会产生新的元数据信息。这是 Java 的设计特性之一,有助于节省内存并提高性能。如果你还有其他问题或需要进一步的讨论,请告诉我!原创 2024-09-03 20:15:36 · 400 阅读 · 0 评论 -
JVM 在GC 时的根对象都有那些
栈帧中的局部变量静态字段JNI 引用常量池中的引用程序计数器长时间运行的对象Thread 引用软引用和弱引用的引用队列这些根对象可帮助 GC 判断哪些对象是可达的,从而决定哪些对象可以被回收。理解根对象是优化内存使用和管理的重要一环。原创 2024-08-23 12:25:32 · 846 阅读 · 1 评论 -
JVM 方法区存放那些内容
类结构信息字段信息方法信息方法的常量池静态变量运行时常量池。原创 2024-08-23 12:16:49 · 1054 阅读 · 0 评论 -
Young GC时大量对象进入老年代对GC时间的影响
Young GC时大量对象进入老年代会增加GC时间,尤其是在随后的老年代GC中。这种情况会导致更频繁的Major GC或Full GC,从而影响应用的性能。为了减轻这种影响,可以通过调整JVM参数和GC算法配置来优化GC性能,同时改进应用程序的内存使用策略,以减少不必要的对象晋升。原创 2024-06-13 13:07:37 · 552 阅读 · 0 评论 -
线程池与垃圾回收(GC)
总之,只有当线程池不再被引用,且内部线程都已经停止或完成了任务,线程池对象才会成为垃圾回收的目标。正确管理线程池的生命周期是防止资源泄露和内存溢出的关键。为了使线程池对象成为垃圾回收的候选对象,应当在不再需要线程池时正确关闭它。如果线程池对象不再被引用,且内部线程都已经停止,垃圾回收器在其下一次运行时将会考虑回收线程池对象。只要线程池对象被应用程序所引用,并且它内部的工作线程还在运行或等待任务,它就不会被垃圾回收器回收。这些方法会启动线程池的关闭序列,停止接收新任务,并尝试终止正在执行的任务。原创 2024-04-09 12:52:18 · 811 阅读 · 0 评论 -
逃逸分析(Escape Analysis)
逃逸分析是一种编译器优化技术,用于确定在程序中对象的作用域和生命周期。编译器通过这种分析可以决定是否可以将对象分配在栈上,而不是在堆上。如果一个对象在定义它的方法之外不可访问,即它不会“逃逸”出方法的范围,那么它可能是一个栈上分配的候选者。逃逸分析的目的是减少内存分配开销、减少垃圾回收的压力,以及提高程序的性能。原创 2024-04-06 09:43:33 · 828 阅读 · 0 评论 -
JVM运行时数据区概述以及分别存放的内容
JVM的运行时数据区是JVM在执行Java程序时用于存储数据和状态信息的内存区域。它分为多个部分,每个部分都有其特定的作用和存放的内容。原创 2024-03-10 20:09:16 · 649 阅读 · 0 评论 -
Java 并非所有的对象都放在堆中
尽管存在上述特殊情况,但是在日常的Java应用开发中,大部分对象的生命周期管理和存储都是在堆内存中进行的。在Java中,字符串字面量和其他常量值(如数值、类和接口的引用)会在编译期间被存储在类文件的常量池中。:使用Java本地接口(JNI)技术创建的对象,可能会在Java堆外分配内存,这些对象的生命周期由开发者直接管理,而不是由JVM的垃圾回收器管理。:在某些情况下,如JVM的逃逸分析确定某个对象的作用域不会逃逸出方法之外,那么这个对象可能会被优化为栈上分配,存储在Java栈的局部变量表中。原创 2024-03-10 20:08:59 · 986 阅读 · 1 评论 -
JVM(Java虚拟机)概述
JVM(Java Virtual Machine)是一个能够运行Java字节码的虚拟计算机。它是Java平台的核心组成部分,负责执行编译后的Java程序,提供跨平台运行的能力。JVM使得Java程序可以在任何安装了JVM的操作系统上运行,无需对代码进行修改,实现了"一次编写,到处运行"(Write Once, Run Anywhere)的理念。原创 2024-03-10 19:52:04 · 928 阅读 · 0 评论 -
JVM的各种垃圾回收器(GC)
Serial GC 是用于单线程环境的垃圾回收器,它使用复制算法(Copy)进行年轻代的垃圾回收,而老年代则使用标记-整理(Mark-Compact)算法。Parallel GC(也称为Throughput Collector)是一个并行的垃圾回收器,它在年轻代使用复制算法,在老年代使用标记-整理算法。Shenandoah GC是另一种低暂停时间的垃圾回收器,它与ZGC类似,旨在减少暂停时间,而不是提高吞吐量。ZGC是一种可伸缩的低延迟垃圾回收器,它主要针对大堆内存的系统,并且能够处理数TB级别的堆内存。原创 2024-03-07 12:47:04 · 575 阅读 · 0 评论 -
运行时常量池与栈中的本地变量表的区别
总结来说,运行时常量池和栈中的本地变量表是Java虚拟机中不同的内存区域,它们有着不同的生命周期、存储内容和用途。运行时常量池是类的属性和方法的静态存储区,而本地变量表是方法执行的动态存储区。原创 2024-03-07 12:16:19 · 245 阅读 · 0 评论 -
什么是符号引用?
符号引用是Java虚拟机(JVM)在处理类文件时使用的一种抽象表示,它允许JVM在不同阶段通过解析来动态地定位具体的类成员,这是支持Java动态性(如反射、动态类加载)的关键机制之一。原创 2024-03-07 12:15:17 · 888 阅读 · 0 评论