首页 > 其他分享 >JVM——堆

JVM——堆

时间:2024-03-29 21:58:05浏览次数:23  
标签:对象 回收 算法 复制 垃圾 JVM 伊甸园

注:以下所有内容基于JDK1.8

定义:

线程共享区域:用来保存对象实例,数组等,当堆中没有内存空间可以分配给实例,也无法扩展时,则抛出OutOfMemoryError(OOM)。

JDK1.8后将方法区从堆中移出,转移到本地内存元空间中,主要是为了防止OOM。

空间划分:

老年代(2/3FUllGC):主要保存生命周期较长的对象,一般是一些比较老的对象。

年轻代(1/3MinorGC):进一步划分为:

Eden(伊甸园8/10)区,存储新生对象,达到一定容量阈值后会进行一次垃圾回收(复制算法)

①  S0(幸存者0,1/8)区,存储由伊甸园区和S1区复制而来的对象。达到一定阈值后会跟随伊甸园区进行一次垃圾回收(复制算法)

②  S1(幸存者1,1/8)区,存储由伊甸园区和S0区复制而来的对象,达到一定阈值后会跟随伊甸园区进行一次垃圾回收(复制算法)

注意:以上①②步骤会循环进行,当达到一定次数后(默认好像是15次,可以自己配置),会将循环后的对象转移到老年代。

针对垃圾回收器及垃圾回收算法,后续打算专门记一篇。

   —————文章为参考相关资料后纯手写,如有不同看法,请不吝指正。

   —————封面来源于互联网。

6fb096f0c69741b49313dfc4cf3e7a3e.jpg

 

标签:对象,回收,算法,复制,垃圾,JVM,伊甸园
From: https://blog.csdn.net/2301_81445306/article/details/137156826

相关文章

  • JVM
    JVM.class文件平台无关性类加载器启动类加载器(BootstrapClassLoader):负责加载JDK中的核心类库扩展类加载器(ExtensionClassLoader):负责加载Java的扩展类库系统类加载器(AppClassLoader):负责加载应用程序classpath目录下所有jar和class文件。方法区方法区用于存储JVM......
  • jvm内存模型
    1栈局部变量表存放局部变量局部变量表中的对象是指向堆中对象的地址操作数栈方法内的数据计算程序计数器程序一行代码运行后存放下一行代码的地址本地方法栈方法用native修饰动态链接符号引用转化为直接引用直接引用为方法区的具体地址方法出口2堆新生代伊甸......
  • SAP BTP云上一个JVM与DB Connection纠缠的案例
    前言最近在CF(CloudFoundry)云平台上遇到一个比较经典的案例。因为牵扯到JVM(app进程)与数据库连接两大块,稍有不慎,很容易引起不快。在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB相关部门。关键是如何自证。涉及到职场生存法则,大家都不愿意去背锅,谁背锅,意......
  • JVM(六)——内存模型与高效并发
    内存模型与高效并发一、java内存模型【java内存模型】是JavaMemoryModel(JMM)简单的说,JMM定义了一套在多线程读写共享数据时(成员变量、数组)时,对数据的可见性、有序性、和原子性的规则和保障1)原子性原子性在学习线程时讲过,下面来个例子简单回顾一下:问题提出,两个线......
  • JVM学习
    1.1 JVM种类重用HOTSPOT。还有些列入IBM开发的灯。 1.4JVM和操作系统的关系 1.5JVMJREJDKJDK->JRE->JVM开发需要JDK,运行需要JRE 1.6JVM虚拟机规范JVM是栈结构。JVM翻译字节码有两种方式,解释执行,还有一种是JIT。 1.7JVM整体架构程序计数器......
  • [转帖]SPECjbb MultiJVM - Java Performance
     MovingonfromSPECCPU,weshiftovertoSPECjbb2015.SPECjbbisafromground-updevelopedbenchmarkthataimstocoverbothJavaperformanceandserver-likeworkloads,fromtheSPECwebsite:“TheSPECjbb2015benchmarkisbasedontheusagemodelofa......
  • jvm指针压缩和内存对齐的学习
    jvm指针压缩和内存对齐的学习背景最近要搞一个测试工作.想着能够提高一下在国产服务器上面的性能.想到一个办法是,提高JVM的内存配置.减少GC数量来提高性能.但是同时觉得jvm开启指针压缩的大小其实是32G内存.这里其实一直有一个疑惑.一般的网上说法都是需要低于......
  • [转帖]JVM之指针压缩&内存如何设置
    https://www.cnblogs.com/liang1101/p/12727754.html 在32位到64位的转变中,人们最大的获益是内存容量。在一个32位的系统中,内存地址的宽度就是32位,这就意味着,我们最大能获取的内存空间是2^32(也就是4G)字节。这个容量明显不够用!在一个64位的机器中,理论上,我们能获取到的内......
  • JVM的一些小记
    把最近的一些从jvm原理书中的一些摘要记一下JVM1.对象的内存布局是什么样子?对象在堆内存中的存储布局可以划分3个部分,对象头,实例数据,对齐填充。对象头包括两个部分,第一是对象的运行时数据,如对象哈希码,GC分代年龄,锁状态等,这部分称作MarkWord。第二是类型指针,java通过......
  • 面试类-JVM原理(四)
    说说解释执行和编译执行的区别(补充)先说解释和编译的区别:解释:将源代码逐行转换为机器码。编译:将源代码一次性转换为机器码。一个是逐行,一个是一次性,再来说说解释执行和编译执行的区别:解释执行:程序运行时,将源代码逐行转换为机器码,然后执行。编译执行:程序运行前,将源代码一次......