08_堆学习

news2024/11/25 11:24:36

目录

    • 一、堆的核心概述
      • 2、内存细分
    • 二、设置堆内存大小与OOM
      • 1、设置堆内存大小
      • 2、OOM的说明
    • 三、年轻代与老年代
      • 2、如何查看一个程序新生代和老年代的比例
    • 四、图解对象分配过程
      • 1、图解对象分配过程
      • 2、对象分配特殊情况
      • 3、常用优化工具概述与 Jprofiler的演示
    • 五、Minor GC、Major GC、Full GC
      • 1、Minor GC、Major GC、Full GC的概念
      • 2、Minor GC、Major GC、Full GC的触发机制
    • 六、堆空间分代思想
    • 七、内存分配策略
    • 八、对象分配内存 TLAB
    • 九、小结堆空间的参数设置
    • 十、堆是分配对象的唯一选择吗

一、堆的核心概述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2、内存细分

现代垃圾收集器大部分都基于分代收集理论设计,堆空间细分为:
在这里插入图片描述
JDK7
在这里插入图片描述

JDK8
在这里插入图片描述

二、设置堆内存大小与OOM

1、设置堆内存大小

在这里插入图片描述

2、OOM的说明

OutOfMemoryError : 当堆中的内存超过指定的最大内存时,将会抛出OOM异常
在这里插入图片描述

三、年轻代与老年代

/**
 * -Xms600m -Xmx600m -XX:NewRatio=4
 *
 * -XX:NewRatio : 设置新生代与老年代的比例。默认值是2.
 * -XX:SurvivorRatio :设置新生代中Eden区与Survivor区的比例。默认值是8
 * -XX:-UseAdaptiveSizePolicy :关闭自适应的内存分配策略  (暂时用不到)
 * -Xmn:设置新生代的空间的大小。 (一般不设置)
 *
 * @author shkstart  shkstart@126.com
 * @create 2020  17:23
 */
public class EdenSurvivorTest {
    public static void main(String[] args) {
        System.out.println("我只是来打个酱油~");
        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

配置JVM参数-Xms600m -Xmx600m -XX:NewRatio=4,查看堆内存情况
在这里插入图片描述

2、如何查看一个程序新生代和老年代的比例

jps
jinfo -flag NewRatio 13988

在这里插入图片描述

四、图解对象分配过程

1、图解对象分配过程

首先明白一个事情: 幸存者0区和幸存者1区也称为from区和to区(一般幸存者0区和幸存者1区空的那一个为to区),当Edon中的内存满了的时候,便会发生 Young GC,将没有垃圾回收的对象放到to区

2、对象分配特殊情况

当Young GC后,Edon还是不够超大对象分配内存,此时就会将在老年代分配内存
在这里插入图片描述

3、常用优化工具概述与 Jprofiler的演示

常用优化工具
在这里插入图片描述

Jprofiler的使用

五、Minor GC、Major GC、Full GC

1、Minor GC、Major GC、Full GC的概念

在这里插入图片描述

2、Minor GC、Major GC、Full GC的触发机制

  • Young GC(Minor GC)触发机制
    在这里插入图片描述

  • Full GC(Major GC)的触发机制
    在这里插入图片描述

  • Full GC的触发
    在这里插入图片描述

六、堆空间分代思想

在这里插入图片描述在这里插入图片描述

七、内存分配策略

对象提升规则
在这里插入图片描述

在这里插入图片描述

八、对象分配内存 TLAB

九、小结堆空间的参数设置

十、堆是分配对象的唯一选择吗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27)

MATLAB 自定义最小二乘法拟合直线点云(具体过程)方法二 (27) 一、算法简介二、算法实现1.代码(注释详细)2.效果展示一、算法简介 最小二乘法拟合直线,可以将离散的点云表达为一条规则的数学直线, 这里使用的直线方程为y = kx+b 这里提供具体的实现流程,展示如何进行最…

实现外部缓存-Redis

目录 实现 RedisTemplate RedisTemplate的序列化 RedisSerializer 创建Redis缓存配置类 测试使用 创建配置类 创建注解测试实体 创建配置文件 创建单元测试类进行测试 实现 RedisTemplate XXXTemplate 是 Spring 的一大设计特色,其中,RedisTe…

Linux笔记——进程管理与网络监控技术讲解

系列文章目录 Linux笔记——磁盘进行分区与挂载介绍 Linux笔记——管道相关命令以及shell编程 文章目录 系列文章目录 前言 一 进程管理 1 简介 2 系统执行进程的情况 3 查看进程树 4 服务管理 4.1 服务的运行级别 4.2 chkconfig 4.3 systemctl管理指令 4.4 针…

【文档智能】ERNIE-Layout

前言 这是百度在2022年的一篇工作:ERNIE-Layout。该工作通过增强布局知识的预训练模型,以学习更好的表示,结合文本、布局和图像的特征。旨在利用文档布局相关信息,进行文档理解,进一步提高文档信息抽取的性能。 1、文…

FPGA_学习_13_方差计算小模块

测距器件APD的性能与器件本身的温度、施加在APD的偏置电压息息相关。 在不同的温度下,APD的偏压对测距性能的影响非常大。 要确定一个合适的APD的偏压Vopt,首先你要知道当前温度下,APD的击穿电压Vbr,一般来讲,Vopt Vb…

【Zerotier】通过docker自建PLANET服务器

在如今全球互联的时代,我们对于互联网的依赖程度越来越高。然而,传统的网络连接方式在某些情况下可能会受到一些限制,例如局域网的范围限制、防火墙的阻断或者设备所处的多层NAT等。但是,现在有一个名为ZeroTier的工具出现了&…

yolov7 详解(1):yolov7 网络结构及创新点

文章目录 0. 概述1. 网络整体结构2.创新点2.1 创新点1:E-ELAN结构 (Extended efficient layer aggregation networks)ELAN结构2.2 创新点2: 模型缩放2.3 创新点3: 计划的重参数化卷积2.3.1 结构重参化原理2.3.2 什么是计划的重参数化卷积2.4 标签匹配策略论文: Trainable bag-…

【网络】协议与序列化反序列化

目录 一、相关概念 二、自定义协议 三、编写服务器 四、编写客户端 五、JSON 六、补充内容 一、相关概念 在《网络编程套接字》中,我们实现了服务器与客户端之间字符串的通信。但是更多的时候,需要传输的不仅仅是字符串,而是结构化的数…

奇思 妙想

一. main方法可以被其它方法调用吗? 在C语言中,一个工程内只能声明一个main函数,如果声明多个,则程序无法运行然后报错。Java则不同,Java在一个工程内,可以声明多个main方法,但在程序执行时&am…

搭建OIDC Provider,以Golang为例

搭建OIDC Provider,以Golang为例 1 需求 结合对OIDC:https://blog.csdn.net/weixin_45747080/article/details/131810562的理解,我尝试自己搭建OIDC的demo。在搭建demo之前,我需要先确定我想要实现成什么样子。以上文提到的http…

【算法|动态规划No.6】leetcode63. 不同路径Ⅱ

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

使用diagrams画架构图

序 最近发现一个画架构图的神器diagrams,提供了很多云厂商及开源组件的图标,相比于C4-PlantUML显得更专业一点。 之前写过技术文档画图工具箱,diagrams属于diagram as code工具派别。 mac安装 brew install graphviz pip install diagrams…

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的时间序列预测(Excel可直接替换数据) 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

【模型压缩】 LPPN论文阅读笔记

LPPN论文阅读笔记 LPPN: A Lightweight Network for Fast Phase Picking 背景 深度学习模型的问题在于计算复杂度较高,在实际数据处理中需要面临较高的处理代价,且需要专用的加速处理设备,如GPU。随着数据累积,迫切需要设计一种…

IDE/mingw下动态库(.dll和.a文件)的生成和部署使用(对比MSVC下.dll和.lib)

文章目录 概述问题的产生基于mingw的DLL动态库基于mingw的EXE可执行程序Makefile文件中使用Qt库的\*.a文件mingw下的*.a 文件 和 *.dll 到底谁起作用小插曲 mingw 生成的 \*.a文件到底是什么为啥mingw的dll可用以编译链接过程转换为lib引导文件 概述 本文介绍了 QtCreator mi…

17 界面布局--登录界面

要点: 利用widgets做布局:水平,垂直,栅格 利用弹簧设置收缩 widget宽高比实际控件大很多:设置Fixed 如果需要去除其余边框间隙可以设置layout 将最小尺寸和最大尺寸设置为固定即为固定尺寸 设置窗口标题:wi…

基于DeepFace模型设计的人脸识别软件

完整资料进入【数字空间】查看——baidu搜索"writebug" 人脸识别软件(无外部API) V2.0 基于DeepFace模型设计的人脸识别软件 V1.0 基于PCA模型设计的人脸识别软件 V2.0 更新时间:2018-08-15 在观看了吴恩达老师的“深度学习课程”,了解了深…

关于新手学习Ubuntu使用vim,如何使用c/cpp的编译器以及如何使用makefile的详细记录

ubuntu下 首先如何编辑 1.启动vim编辑器 打开终端,输入vim,按回车键。 vim gcc.c 2.进入编辑模式 输入i ,进入插入模式。就可以修改文件内容了。 按“ESC”退出编辑模式。 3.退出 Shift键 “:”,切换到命令模式。 输入“q”后回车&…

基于OpenCV的红绿灯识别

基于OpenCV的红绿灯识别 技术背景 为了实现轻舟航天机器人实现红绿灯的识别,决定采用传统算法OpenCV视觉技术。 技术介绍 航天机器人的红绿灯识别主要基于传统计算机视觉技术,利用OpenCV算法对视频流进行处理,以获取红绿灯的状态信息。具…

【Linux】Tcp服务器的三种与客户端通信方法及守护进程化

全是干货~ 文章目录 前言一、多进程版二、多线程版三、线程池版四、Tcp服务器日志的改进五、将Tcp服务器守护进程化总结 前言 在上一篇文章中,我们实现了Tcp服务器,但是为了演示多进程和多线程的效果,我们将服务器与客户通通信写成了一下死循…