JVM调优简单梳理,一分钟了解JVM调优

本文解析了JVM的工作原理,包括内存模型如堆、栈和方法区的划分,以及GC回收机制。深入探讨了如何优化JVM,减少GC频率和时间,提升应用性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JVM原理简单的认识

        JVM指的是Sun公司的HotSpot JVM,JDK1.8之后JVM整合了JRockit 和 HotSpot的优点。JVM的行原理简历理解就是:JVM通过编译器将JAVA文件编译成class文件;然后通过类的加载器,将class加载到内存中,然后通过解释器对class文件进行解释,并转换为当前机器对应的机器码,从而实现“一处编译,到处运行”。

一、JVM内存模型?
JVM把内存划分为堆,载,方法区。

堆:堆是所有线程共享,虚拟机启动时创建,主要存放对象和数组,所占内存比较大。
       堆结构包含年轻代,老年代和持久代,其中年轻代又分为Eden区和2个Survivor区(幸运区)。
       -Xms=***    堆初始化空间大小,默认内存的1/64
       -Xmx=***    堆空间最大值

       -XX:NewSize=***    新生代空间大小
       -XX:MaxNewSize=***   新生代空间最大值
       -Xmn=***     新生代空间大小,这里包含From、To两个Survivor区(比例:8:1:1)。           
       

栈:栈是线程独享的。生命周期和线程相同,主要存储局部变量和参数等信息。当系统创建一个线程时,会为该线程分配一个栈空间,
       程序在每次调用一个方法时,会为每个方法创建一个栈帧并PUSH到当前线程对应的栈中。
       -Xss=***  栈空间大小       

方法区:方法区是线程共享的,主要存储类的信息、常量、静态变量等信息;JDK1.8之后方法区移除,方法去的数据都迁移至元空间,
              元空间和方法区类似,不同的是,方法区是在虚拟机中,而元数据是存储在本地内存中。
              -XX:PermSize=***
              -XX:MaxPermSize=***

              -XX:MetaspaceSize=***
              -XX:MaxMetaspaceSize=***


二、GC回收?
GC回收分为2中,一种是Minor GC,也就是年轻代GC(YGC),一种Major GC, 也就是FULLGC。
无论是YGC还是FULLGC都会使得程序暂停,而进行GC回收活动。所以我们应避免系统出现频繁的YGC和FULLGC,以及尽量降低GC时长。

因此在做JVM调优时,我们可以从几个方面入手:
第一、优化代码逻辑,尽量少创建一次性对象,特别是内存占用较大的对象
第二、对于频繁使用的对象,我们可以建立一个对象池,从而避免频繁的创建对象和回收对象。
第三、可以调整堆大小


三、常用调优工具?

我常用调优GUI工具(JDK自带):jconsole   jVisualVM

 

以上是对JVM调优的简单梳理,更多详细的,请自行探索 ~_~!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值