• 2024-11-22JVM 性能调优 -- 线上应用 JVM 内存调优【实战】
    前言:上一篇我们分享了线上应用的JVM内存预估技巧,通过对JVM内存的预估来合理的选用服务器资源和应用部署方案,本篇我们来分享引用的JVM调优实例,如何通过JVM调优来降低应用的GC频率。JVM系列文章传送门初识JVM(Java虚拟机)深入理解JVM(Java虚拟机)一文搞懂JVM
  • 2024-10-22排查full gc
    GC就是Java的垃圾回收机制,要了解什么情况下会发生GC(即GC得触发条件),我们需要先了解JVM的内存模型结构,之前一篇文章已经详细讲解了Jvm的内存模型结构,而通常来说,GC主要针对的是堆(javaheap)区。而javaheap是分代的(年轻代和老年代),为什么要分代?其实也不难理解,分代就是为了优化性能
  • 2024-09-05企业级项目实战以及多年项目开发经验大牛打造 - - JVM
    JVMjvm分区Heap(堆区):主要存储new出来的对象实例,Java堆中细分为:新生代和老年代,一个新生代分为1个Eden区和2个Survivor区,说明:绝大部分对象在Eden区生成,当Eden区装填满的时候,会触发YoungGarbageCollection,即YGC。垃圾回收的时候,在Eden区实现清除策略,没有被引用的对象则直接
  • 2024-08-31新手指南基础学
    equels和的区别equals方法用于比较对象的内容是否相等,可以根据自定义的逻辑来定义相等的条件,而操作符用于比较对象的引用是否相等,即它们是否指向同一块内存地址。equals方法是一个实例方法,可以被所有的Java对象调用,而操作符可以用于比较对象的引用或基本数据类型的值。equ
  • 2024-07-30JDK工具
    jps(JavaProcessStatus):查看正在运行的Java进程 jstat(JVMStatisticsMonitoringTool):查看JVM的统计信息jstat-gc24388 输出字段:      S0C、S1C:Survivor0和Survivor1区域的当前容量(KB)      S0U、S1U:Survivor0和Survivor1区域的已使用空
  • 2024-07-29JVM参数
    文章目录概要技术细节小结概要JVM参数技术细节大多数的Java应用不需要进行JVM优化大多数导致GC问题的原因是代码层面的问题导致的上线之前,应先考虑将机器的JVM参数设置到最优减少创建对象的数量减少使用全局变量和大对象优先架构调优和代码调优,JVM优化是不得
  • 2024-07-17对象存在位置
    对象优先在Eden分配堆分为新生代和老年代,新生代用于存放使用后就要被回收的对象(朝生夕死),老年代用于存放生命周期比较长的对象。创建的大部分对象,都属于生命周期较短的对象,所以会存放在新生代。新生代又细分Eden、FromSurvivor、ToSurvivor,对象会优先在Eden区分配。
  • 2024-07-07JVM
    JVMJVM的位置操作系统的堆中,不能与硬件直接交互,需通过操作系统交互JVM体系结构类加载器用于加载class文件三种类加载器​ 1.启动类加载器BootstarpClassLoader​ 2.拓展类加载器ExtensionClassLoader​ 3.应用程序类加载器ApplicationClassLoader双亲委
  • 2024-06-15JVM垃圾回收算法和垃圾回收器
    垃圾回收算法复制算法(Copying)将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑内存碎片等复杂情
  • 2024-04-07JVM—对象的创建流程与内存分配
    JVM—对象的创建流程与内存分配创建流程对象创建的流程图如下:对象的内存分配方式内存分配的方式有两种:指针碰撞(BumpthePointer)空闲列表(FreeList)分配方式说明收集器指针碰撞(BumpthePointer)内存地址是连续的(新生代)Serial和ParNew收集器空闲列表(FreeL
  • 2024-01-12G1中region不同区区别
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.c
  • 2023-12-21JVM内存模型
    JVM内存模型JDK7堆内存模型内存模型说明:1)Young(新生代)Young区被划分为三部分,Eden(ˈiːdn)区和两个大小严格相同的Survivor(sərˈvaɪvər)区,其中Survivor区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在Eden区间变满的时候,GC就会将存活的对象移到空闲
  • 2023-12-20JVM初了解
    一、JVM常用启动参数说明以-开头为标准参数,所有的JVM都要实现这些参数,并且向后兼容,如-server。-D设置系统属性,如-Dfile.encoding=UTF-8。以-X开头为非标准参数,基本都是传给JVM的,默认JVM实现这些参数的功能,但是并不保证所有JVM实现都满足,且不保证向后兼容
  • 2023-12-17JVM虚拟机系统性学习-对象的创建流程及对象的访问定位
    对象的创建流程与内存分配对象创建流程如下:Java中新创建的对象如何分配空间呢?new的对象先放Eden区(如果是大对象,直接放入老年代)当Eden区满了之后,程序还需要创建对象,则垃圾回收器会对Eden区进行垃圾回收在垃圾回收的时候,会将Eden区的幸存对象转移到SurvivorFrom区如果再
  • 2023-12-17JVM虚拟机系统性学习-对象的创建流程及对象的访问定位
    欢迎关注公众号:【11来了】可以查看深入理解Redis系列完整文章!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!对象的创建流程与内存分配对象创建流程如下:Java中新创建的对象如何分配空间呢?new的对象先放Eden区(如果是大对象,直接放入老年代)当
  • 2023-12-14JVM虚拟机系统性学习-运行时数据区(堆)
    运行时数据区JVM由三部分组成:类加载系统、运行时数据区、执行引擎下边讲一下运行时数据区中的构成根据线程的使用情况分为两类:线程独享(此区域不需要垃圾回收)虚拟机栈、本地方法栈、程序计数器线程共享(数据存储区域,此区域需要垃圾回收)存储类的静态数据和对象数据堆和方法区堆Java
  • 2023-11-20新生代内存需要有两个Survivor区 S0、S1
     在我的上一篇博客中,介绍了JVM堆内存的结构以及在堆中进行的GC机制,链接是浅谈JAVAGC机制与性能优化那么,在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果
  • 2023-11-09【深入理解Java虚拟机】内存分配策略
    本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。本系列其他文章:【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM【深入理解Java虚拟机】垃圾回收机制垃圾收集器与内存分配策略Java技术体系中所提倡的自动内存管理最终可以归结为自动
  • 2023-10-29Java 基础学习第一弹
    1.equels和==的区别equals方法用于比较对象的内容是否相等,可以根据自定义的逻辑来定义相等的条件,而==操作符用于比较对象的引用是否相等,即它们是否指向同一块内存地址。equals方法是一个实例方法,可以被所有的Java对象调用,而==操作符可以用于比较对象的引用或基本数据类型的
  • 2023-10-27JVM 思考与总结
    相关基础知识见:深入理解JVM--垃圾收集器与内存分配策略 新生代为什么需要两个Survivor区?如果只有一个Eden区加一个Survivor区,那么MinorGC后Eden区还存活下来的对象复制到Survivor区。而Survivor区里的对象在这次MinorGC中,既有这次GC没活下来的,还有这
  • 2023-10-25《面试1v1》JVM内存模型
    我是javapub,一名Markdown程序员从
  • 2023-09-02【性能测试】JVM自带内存分析工具详解
    一、Jstat使用(重点)Jstat命令是jvm调优非常重要,且非常有效的命令。具体用法如下:1.垃圾回收统计jstat-gcjstat-gc进程id这个命令非常常用,在线上有问题的时候,可以通过这个命令来分析问题。下面我们来测试一下,启动一个项目,然后在终端驶入jstat-gc进程id,得到如下结果上面
  • 2023-08-20jvisualvm安装Visual GC插件
    给jdk自带的jvisualvm安装VisualGC插件,遇到We'resorrythejava.netsitehasclosed(我们很抱歉java.net网站已经关闭)1、找到新的更新地址visualvm新访问地址:https://visualvm.github.io/index.html 进入“Plugins”,找到对应自己JDK版本的更新地址2、进入jvisualvm的插件管
  • 2023-08-14年轻代和老年代垃圾回收
    复制算法更多博客内容访问只爱吃火龙果,点击了解详情概述复制算法将内存划分为两个区间,在任意时间点,所有动态分配的对象都只能分配在其中一个区间(称为活动区间),而另外一个区间(称为空闲区间)则是空闲的。当有效内存空间耗尽时,JVM将暂停程序运行,开启复制算法GC线程。接下来GC线
  • 2023-07-30《面试1v1》JVM内存模型
    聊聊JVM内存模型我是javapub,一名Markdown程序员从