首页 > 系统相关 >深入理解Java虚拟机 --- 内存分配与回收策略

深入理解Java虚拟机 --- 内存分配与回收策略

时间:2024-11-08 13:19:41浏览次数:1  
标签:触发 Java 对象 虚拟机 Young --- GC 分配

对象优先在Eden区分配

大多数情况下,对象在Eden区进行分配。

当Eden区没有足够的空间来进行分配时,就会触发Young GC(Minor GC)。

当触发Young GC时,如果Survivor区不够放存活的对象,那么就会触发分配担保机制提前转移到老年代。

大对象直接进入老年代

大对象的问题:

1、容易导致内存明明还有不少空间时就提前触发垃圾收集。

2、复制大对象时需要高额的内存复制开销。

HotSpot提供了-XX:PretenureSizeThreshold ,指定了大于该设置值的对象直接在老年代分配,目的是为了避免大对象在Eden及两个Surivor区之间的来回复制。

长期存活的对象将进入老年代

虚拟机给每个对象定义了一个对象年龄的计数器,存储在对象头中。

每次经历Young GC且仍存活的对象,都会加一岁。当到达指定的年龄(默认15岁)就会进入到老年代。

动态对象的年龄判断

HotSpot虚拟机并不是一定要求对象达到指定年龄才能进入老年代。

当某一个年龄(x)的所有对象的大小占survivor区大于一半时,那么年龄≥x的对象都会晋升到老年代。

GC的触发条件

Young GC

当年轻代空间不足时,就会触发Young GC。

Old GC

当老年代内存不足时,会触发Old GC。

Full GC

触发条件:

1、老年代或者元空间内存不足

2、System.gc()方法调用

3、堆内存分配担保失败(大对象)

标签:触发,Java,对象,虚拟机,Young,---,GC,分配
From: https://www.cnblogs.com/ayu0v0/p/18534874

相关文章

  • 深入理解Java虚拟机 --- 类加载机制
    类的生命周期类的生命周期:加载→验证→准备→解析→初始化→使用→卸载类加载的时机关于在什么情况下需要需要开始类加载过程的第一个阶段"加载",虚拟机并没有进行强制约束,这点交给虚拟机的具体实现来自由把握。但严格规定了有且只有六种情况必须立即对类进行"初始化":(字节码......
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-tools使用(五)
    一、前言  GLM-4是智谱AI团队于2024年1月16日发布的基座大模型,旨在自动理解和规划用户的复杂指令,并能调用网页浏览器。其功能包括数据分析、图表创建、PPT生成等,支持128K的上下文窗口,使其在长文本处理和精度召回方面表现优异,且在中文对齐能力上超过GPT-4。与之前的GLM系列......
  • JavaLin第六章:JavaLin的访问管理和默认响应
    文章目录前言一、JavaLin的访问管理二、JavaLin的默认响应总结前言最近忙起来了,就没有更新了,实在不不好意思,最近会进行javalin的陆陆续续的更新,希望大家支持。在Java里面有很多框架,其中权限管理是一个非常重要的功能实现,对于每个用户设定该用户的角色,对应相应用户......
  • 复制下来就能跑:Java智能问答系统-介绍与代码实践 - 基于springboot_springai_国产大模
    本文的目的是在5分钟内能把智能问答系统的原理和实践讲明白代码可执行,复制粘贴即可,可以快速跑起来。智能问答系统简介智能问答系统是一种人工智能应用,它能够理解用户提出的问题,并通过自然语言处理技术来分析和理解问题的含义。随后,系统会在其知识库中搜索相关信息,以生成......
  • 庖丁解java(一篇文章学java)
    (大家不用收藏这篇文章,因为这篇文章会经常更新,也就是删除后重发) 一篇文章学java,这是我滴一个执念...当然,真一篇文章就写完java基础,java架构,java业务实现,java业务扩展,根本不可能.所以,这篇文章,就是一个索引,索什么呢?  请看下文...关于决定开始写博文的介绍......
  • 【补档】玄武550电源怎么样? - 约呼的回答 - 知乎
    【补档】玄武550电源怎么样?-约呼的回答-知乎约呼一个路过的图吧用户低预算整机非常推荐,高预算慎选。低预算整机非常推荐,高预算慎选。优点不少,缺点也有。先说优点:价格上来说便宜大碗,用料不错,部分型号反向虚标,比如550v4其实是按650w规格用料来做的,拆解视频一堆,相对透明,售......
  • MM--项目中遇到的一些问题记录
    采购订单:创建采购订单时,供应商对应的信息记录已失效,但是切换供应商之后价格不会自动更新成01.SU01-查看用户对应的采购缺省值  2.SPRO-维护采购缺省值 采购订单收货的时候,提示无符合条件的行项目经打断点发现是由于程序中判断时公司间的内部交易所导致的,根本原......
  • c语言入门学习这一篇就够了-知识点总结(三万字二级必看)
    C语言   C语言是中高级语言的代表之一,它是所有现代编程语言的基石,包括C++、Java、C#、Python、JavaScript、Swift等。C语言是学习其他编程语言的基础,因为它提供了对系统底层的精确控制,这使得它在开发操作系统、驱动程序、嵌入式系统、高性能计算等领域中有着不可替代的......
  • Me-LLaMA——用于医疗领域的新型开源大规模语言模型
    摘要大规模语言模型的出现是提高病人护理质量和临床操作效率的一个重大突破。大规模语言模型拥有数百亿个参数,通过海量文本数据训练而成,能够生成类似人类的反应并执行复杂的任务。这在改进临床文档、提高诊断准确性和管理病人护理方面显示出巨大的潜力。然而,像ChatGPT和......
  • 理解Web登录机制:会话管理与跟踪技术解析(四)-拦截器Interceptor、异常处理
    本文将详细探讨如何通过拦截器实现登录校验,并介绍如何通过异常处理来确保系统的鲁棒性。我们将通过具体的示例,深入分析如何在Spring框架中配置拦截器与异常处理,以便为开发者提供一套高效、安全的登录校验和异常管理方案。目录前言拦截器Interceptor快速入门Interceptor......