首页 > 系统相关 >JVM-实战篇-内存调优

JVM-实战篇-内存调优

时间:2023-12-29 11:44:40浏览次数:42  
标签:泄漏 实战篇 Java 请求 调优 内存 JVM 工具 溢出

1 内存溢出和内存泄漏

  • 概念:内存泄漏:在Java中如果不在使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。
  • 内存泄漏绝大多数情况都是由堆内存泄漏引起的,所以后续没特殊说明讨论的均为堆内存泄漏。
  • 若持续发生内存泄漏,不管有多大的内存迟早会被消耗完,最终导致的结果就是内存溢出。但是产生内存溢出并不是只有内存泄漏这一种原因。
  • 内存溢出指的是内存的使用量超过了Java虚拟机可以分配的上限,最终产生了内存溢出OutOfMemory的错误。
  • 常见场景:定时任务;大量请求同时处理产生的数据未及时清理等。

2 解决内存溢出的方法

  •  解决思路
  1. 发现问题:通过监控工具尽可能早地发现内存慢慢变大的现象;
    • top命令:top命令是linux下用来查看系统信息的命令;
    • VisualVM:它是多功能合一的Java故障排除工具并且是一款可视化工具,整合了命令行JDK工具和轻量级分析功能。下载地址:https://visualvm.github.io/
    • Prometheus + Grafana 是企业常用的监控方案;
  1. 诊断原因
    • 生成内存快照并分析;
    • 在线定位问题。
  1. 修复问题
  2. 测试验证
  • 产生内存溢出的原因:
  1. 代码中的内存泄漏:equals() 和 hashCode();内部类引用外部类;ThreadLocal的使用;String的intern方法;通过静态字段保存对象;资源没有争创关闭;
  2. 并发请求问题;并发请求问题指的是用户通过发送请求向Java应用获取数据,正常情况下Java应用将数据返回之后,这部分数据就可以在内存中被释放掉;

3 案例实战

标签:泄漏,实战篇,Java,请求,调优,内存,JVM,工具,溢出
From: https://www.cnblogs.com/daytoy105/p/17930940.html

相关文章

  • JVM的GC学习
    JVM的GC学习2023-12-28T17:20:25.182+0800:7.363:[FullGC(MetadataGCThreshold)[PSYoungGen:29067K->0K(13002752K)][ParOldGen:16K->26768K(16252928K)]29083K->26768K(29255680K),[Metaspace:20543K->20543K(1069056K)],0.0838171secs][Times:......
  • JVM虚拟机-基础篇1-初识JVM(一)
    1初识JVM1.1什么是JVM概念:JVM全称是JavaVirtualMachine,中文译名Java虚拟机。本质:JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件。1.2JVM的功能 1)解释和运行对字节码文件中的指令,实时的解释成机器码,让计算机执行; 2)内存管理自动为对......
  • JVM跟踪类型参数
    JVM里有一系列的跟踪相关的参数,如下图(JAVA8) boolTraceBiasedLocking=false{product}boolTraceClassLoading=false{productrw}boolTrac......
  • 学一点关于JVM类加载的知识
    要研究类加载过程,我们先要知道关于Java处理代码的流程是怎么样的。第一步:编写源代码这一步是我们最熟悉的,就是我们在idea上写的业务代码,生成Example.java文件。publicclassExample{publicstaticvoidmain(String[]args){inta=10;intb......
  • 人工智能大模型原理与应用实战:预训练模型的优化与调优
    1.背景介绍人工智能(ArtificialIntelligence,AI)是计算机科学的一个分支,研究如何使计算机具有智能,能够理解人类语言、进行问题解决、学习和自主决策等。随着数据量的增加和计算能力的提升,深度学习(DeepLearning)成为人工智能的核心技术之一,它能够自动学习表示和特征,从而实现人类级别......
  • Java应用怎么调优?【转】
    一、Java应用调优的关键指标调优之前首先我们要知道怎样才算是“优”,不能笼统的说我的程序性能很好,所以就需要有一个具体的指标来衡量性能情况,而在JVM里面衡量性能两个指标分别“吞吐量”和“停顿时间”。吞吐量程序运行过程中执行两种任务,分别是执行业务代码和进行垃圾回收,吞......
  • TSNE 的参数调优: 实现更好的数据可视化效果
    1.背景介绍T-SNE(t-distributedStochasticNeighborEmbedding)是一种用于非线性降维的算法,主要用于数据可视化。它可以将高维数据降至二维或三维,使数据点之间的距离尽可能保持不变,从而实现数据的可视化。T-SNE算法的核心思想是通过一个高斯分布的概率模型来描述数据点之间的相似性......
  • 2、jvm虚拟机垃圾回收机制
    一、首先了解一下堆栈内存1、jvm内存结构  从上图可以看出,整个JVM内存是由栈内存、堆内存和永久代构成。年轻代(Newgeneration)=eden+s0+s1堆内存=年轻代+老年代(Oldgeneration)JDK1.8以前: JVM内存=栈内存+堆内存+永久代JDK1.8以后: 由元空间取代了永久代,......
  • 【JVM调优】内存溢出+CPU占用过高:问题排查+解决方案+复盘
    前言最近刚上线了一款社交项目,运行十多天后(运营持续每天推量),发现问题:系统OOM(资源不能被释放)导致服务器频繁且长时间FGC导致服务器CPU持续飚高日志中内存溢出:java.lang.OutOfMemoryError:Javaheapspace程序十分卡顿,严重影响用户使用从以下方面,为大家分享此次问题解决流程问题出......
  • 大数据从业者必知必会的Hive SQL调优技巧 | 京东云技术团队
    摘要:在大数据领域中,HiveSQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,HiveSQL查询的性能往往不尽人意。本文针对HiveSQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技......