JAVA虚拟机(JVM)中的堆

news/2024/9/24 3:17:32/

介绍

Java虚拟机中的堆是一个非常重要的区域,它一般用来存储实例对象和数组的区域,它存在于运行时数据区,同时它是线程共享的区域,在堆内存不足时会发生OOM,也是Java中的垃圾回收器回收的主要区域。但是不正确的内存管理可能导致内存泄漏,即不需要的对象也没有被垃圾回收器回收掉。

位置与内部结构

在JDK7和JDK8中的堆的内存结构不完全一致,本文针对JDK8中的堆结构进行说明

在JDK8中堆被分为了两部分,分别是年轻代和老年代。

年轻代

年轻代:年轻代一般存储的是刚创建的实例和生命周期比较短的对象,而且年轻代是垃圾回收频繁回收的区域。

年轻代又被分成了三部分    Eden(伊甸园)区,S0(幸存者区),S1(幸存者区) 。 他们的默认内存大小比值是 8  :1 :1。在垃圾回收时起到了关键作用,本文只介绍堆,暂不介绍垃圾回收。

老年代

老年代:老年代一般存储的是生命周期较长的对象,这些对象通常是由年轻代多次垃圾回收后仍未回收的对象晋升上来的。老年代的垃圾回收的频率没有年轻代的垃圾回收的频率频繁。

在默认情况下年轻代和老年代的内存大小占比为 1 :2。这个内存大小可以由开发者自己设置。

线程共享

Java虚拟机的堆是线程共享的,因此需要同步机制来避免并发同步访问时带来的数据不一致的问题,例如sync和juc包下的同步工具。

内存泄漏和内存溢出

内存泄漏:当一个对象没有被任何线程引用即没有被GCRoot对象利用可达性分析算法引用到,但是仍然在内存中占用内存空间,就会产生内存泄漏。这一般是长生命周期对象 引用短生命周期而造成的。

内存溢出:当堆内存中的对象过多,并且垃圾回收后依然内存不足,就会发生内存溢出(OOM)。


http://www.ppmy.cn/news/1462103.html

相关文章

Linux-centos下安装ffmpeg的详细教程

源安装 第一种方式: . 首先需要安装yum源: 这个源安装的ffmpeg版本是3.4 yum install epel-release yum install -y https://mirrors.ustc.edu.cn/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm然后可以安装ffmpeg yum install -y ffmpeg ff…

php+vant van-uploader手机拍照 上传

设置capture”user”&#xff0c;则只会调起摄像头&#xff1b; 不设置capture“user”&#xff0c;则会弹窗让选择相册或拍照。 HTML: <link rel"stylesheet" href"/vue/vant.css"><van-field name"uploader" label"照片"&…

《Python编程从入门到实践》day29

# 昨日知识点回顾 修改折线图文字和线条粗细 矫正图形 使用内置格式 # 今日知识点学习 15.2.4 使用scatter()绘制散点图并设置样式 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg)plt.style.use(seaborn-v0_8) # 使用内置格式 fig, ax plt.subpl…

基于Hadoop的课程诊改大数据可视化分析研究与应用

基于Hadoop的课程诊改大数据可视化分析研究与应用 “A Study and Application of Big Data Visualization Analysis for Course Diagnosis and Improvement based on Hadoop” 完整下载链接:基于Hadoop的课程诊改大数据可视化分析研究与应用 文章目录 基于Hadoop的课程诊改大…

jenkins连接ubuntu普通用户节点

1.创建credentials 2.创建node 3.在jenkins服务器还需要进行的操作&#xff08;jenkins服务器中&#xff09; mkdir /var/lib/jenkins/.ssh ssh-keyscan -H 192.168.110.204 >> /var/lib/jenkins/.ssh/known_hosts chown -R jenkins:jenkins /var/lib/jenkins/.ssh/ 4.…

超声波清洗机哪家好一点?四款超一流超声波清洗机大盘点

在追求极致清洁和维护精密工具、设备及珍贵物品的时代&#xff0c;超声波清洗机显得尤为重要。不仅因其高效、快速的清洁效果&#xff0c;更因其能够触及传统手工清洁所不能及的微小缝隙。无论你是珠宝设计师、机械工程师、还是热爱生活的普通家庭用户&#xff0c;超声波清洗机…

Android MediaCodec 简明教程(七):使用 MediaCodec 解码到 OES 纹理上

系列文章目录 Android MediaCodec 简明教程&#xff08;一&#xff09;&#xff1a;使用 MediaCodecList 查询 Codec 信息&#xff0c;并创建 MediaCodec 编解码器Android MediaCodec 简明教程&#xff08;二&#xff09;&#xff1a;使用 MediaCodecInfo.CodecCapabilities 查…

OpenCLkernel编程注意事项

浮点值计算时&#xff0c;需要用f前缀(表示float)的数学函数&#xff0c;例如fmax、fmin、fabs等。