jvm性能优化

何必怀念 何必怀念     2022-09-18     587

关键词:

  •   java应用程序是应用在JVM上的,你们对JVM又有多少了解呢?JVM将内存分为三部分:NEW(年轻代)、Tenured(年老代)、Perm(永久代)。

      (1)年轻代:用来存放java分配的新对象。

      (2)年老代:经过垃圾回收没有被回收掉的对象被复制到年老代

      (3)永久代:存放class、method信息

 

  • 内存泄漏以及解决方法:

 一、系统崩溃之前的现象

(1)、每次垃圾回收的时间都比较长,时间在逐渐的延长

二、生成堆的dump文件

  (1)、通过JMX的MBean生成当前的Heap信息,大小为一个3G(整个堆的大小)的hprof文件,如果没有启动JMX可以通过Java的jmap命令来生成该文件。

三、分析内存泄漏

通过Mat我们能清楚地看到,哪些对象被怀疑为内存泄漏,哪些对象占的空间最大及对象的调用关系。针对本案,在ThreadLocal中有很多的JbpmContext实例,经过调查是JBPM的Context没有关闭所致。另外,通过Mat或JMX我们还可以分析线程状态,可以观察到线程被阻塞在哪个对象上,从而判断系统的瓶颈。

解决方法:

(一)、为什么崩溃前垃圾回收的时间越来越长?

   根据内存模型和垃圾回收算法,垃圾回收分两部分:内存标记、清除(复制),标记部分只要内存大小固定时间是不变的,变的是复制部分,因为每次垃圾回收都有一些回收不掉的内存,所以增加了复制量,导致时间延长。所以,垃圾回收的时间也可以作为判断内存泄漏的依据

(二)、为什么Full GC的次数越来越多?

因此内存的积累,逐渐耗尽了年老代的内存,导致新对象分配没有更多的空间,从而导致频繁的垃圾回收

(三)、为什么年老代占用的内存越来越大?

因为年轻代的内存无法被回收,越来越多地被Copy到年老代

 

四、调优方法的原则

  (1)、多数导致GC问题的java应用,都不是因为我们参数设置错误,而是代码问题

  (2)、在应用上线之前,先考虑将机器的JVM参数设置到最优(最合适)。

  (3)、减少创建对象的数量。  

   (4)、减少使用全局变量和大对象。

 

jvm性能优化

 java应用程序是应用在JVM上的,你们对JVM又有多少了解呢?JVM将内存分为三部分:NEW(年轻代)、Tenured(年老代)、Perm(永久代)。   (1)年轻代:用来存放java分配的新对象。   (2)年老代:经过垃圾... 查看详情

jvm性能调优

  JVM技术图谱 性能调优性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。性能调优基本上按照以... 查看详情

性能优化系列三:jvm优化1

一、几个基本概念GCRoots对象都有哪些所有正在运行的线程的栈上的引用变量。所有的全局变量。所有ClassLoader。。。1.SystemClass.2.JNILocal3.JNIGlobal4.ThreadBlock5.BusyMonitor6.JavaLocal7.NativeStack8.Unfinalized9.Unreachable10.JavaStackFrame11.Unknow 查看详情

spark系列(代码片段)

...《Java并发编程》,《Spring核心知识》《Docker教程》和《JVM性能优化》,都是多年面试总结。欢迎关注【后端精进之路】,轻松阅读全部文章。Java并发编程:Java并发编程系列-(1)并发编程基础Java并发编程系列-(2)线程的并发工具类Ja... 查看详情

第七篇:双管齐下,jvm内部优化与jvm性能调优

目录一、前言二、编译时优化2.1Javac编译器2.2Java语法糖2.2.1泛型和泛型擦除 查看详情

第七篇:双管齐下,jvm内部优化与jvm性能调优

目录一、前言二、编译时优化2.1Javac编译器2.2Java语法糖2.2.1泛型和泛型擦除 查看详情

spark系列(代码片段)

目前已经更新完《Java并发编程》,《JVM性能优化》,《Spring核心知识》《Docker教程》和《Spark基础知识》,都是多年面试总结。欢迎关注【后端精进之路】,轻松阅读全部文章。Java并发编程:Java并发编程系列-(1)并发编程基础Java并... 查看详情

jvm性能调优实战之:一次系统性能瓶颈的寻找过程

玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈。性能优化分为好几个层次,比如系统层次、算法层次、代码层次...JVM的性能优化被认为是底层优化,门槛较高,精通这... 查看详情

spark性能优化-jvm虚拟机垃圾回收调优

12 34 查看详情

深入jvm内核---jvm性能优化

持久代用来防止类、类的一些常量操作   1.类和接口的全限定名   2、字段的名称和描述符   3、方法和名称和描述符   两个原则   1.一个是将转移到老年代的对象数量降到最少   因为老年代空间上的GC处理会花费更多... 查看详情

jvm性能优化入门指南

前言入门JVM垃圾回收机制后,接下来可以学习性能调优了。主要有两部分内容:JDK工具的使用。调优策略。兵器谱jps列出正在运行的虚拟机进程,用法如下:jps[-option][hostid]选项作用q只输出LVMID,省略主类的名称m输出mainmethod的... 查看详情

jvm性能优化(代码片段)

1、重新认识JVMJVM的大体物理结构图:如上面架构图所示,JVM分为三个主要子系统:(1)类加载器子系统(ClassLoaderSubsystem);(2)运行时数据区(RuntimeDataArea);࿰ 查看详情

jvm性能参数优化

以上是jdk1.7的默认GC回收器Java的gc回收的类型主要有几种 UseSerialGC,UseConcMarkSweepGC,UseParNewGC,UseParallelGC,UseParallelOldGC,UseG1GC,而这几个参数是如何搭配的,实际上只要看下面的代码就非常清楚 我们把GC分成4种类型1.&nbs... 查看详情

elasticsearch性能优化实践(jvm调优+es调优)

参考技术A近一年内对公司的ELK日志系统做过性能优化,也对SkyWalking使用的ES存储进行过性能优化,在此做一些总结。本篇主要是讲ES在ELK架构中作为日志存储时的性能优化方案。随着接入ELK的应用越来越多,每日新增索引约230个... 查看详情

双管齐下,jvm内部优化与jvm性能调优(代码片段)

文章目录一、前言二、编译时优化2.1Javac编译器2.2Java语法糖2.2.1泛型和泛型擦除2.2.2自动装箱、自动拆箱、遍历循环2.2.3条件编译三、运行时优化(核心:JIT编译器/即时编译器)3.1HotSpot虚拟机内的JIT编译器3.1.1编译器... 查看详情

jvm性能优化系列-编写高效java程序

4.编写高效Java程序4.1面向对象构造器参数太多怎么办?正常情况下,如果构造器参数过多,可能会考虑重写多个不同参数的构造函数,如下面的例子所示:publicclassFoodNormal{//requiredprivatefinalStringfoodName;//名称privatefinalintreilang;//热... 查看详情

火遍github的这份jvm性能优化实践手册,首发下载量就已过百万

本书从实验科学的角度探讨了Java性能优化的方方面面,重点阐述了**的实用JVM性能调优策略、工具和技巧。通过本书,我们不仅可以了解Java原理和技术如何充分利用现代硬件和操作系统、衡量Java性能的陷阱以及微基准测试的弊... 查看详情

jvm虚拟机详解+tomcat性能优化(代码片段)

1.JVM(javavirtualmechinal)(1)JVM有完善的硬件架构,如处理器、堆栈、寄存器当,还具有相应的指令系统。(2)JVM的主要工作时解释自己的指令集(即字节码),并映射到本地的cpu的指令集或OS系统调用。  2.JVM虚拟机主要有堆... 查看详情