Jvm -堆对象的划分
堆对于一个jvm进程来说是唯一的,一个进程只有一个jvm,但是进程半酣多个线程,多个线程共享一个堆。
也就是说,一个jvm实例只存在一个堆,同时对也是Java内存管理的核心区域。
Java堆区域的大小在jvm启动时就已经被确定下来了,是jvm管理的最大的一块内存空间,但对的大小也是可以调节的。
《Java虚拟机规范》规定对可以处于物理上不连续的内存空间中,但在逻辑上他应该被视为是连续的。
所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区,在《Java虚拟机规范》中对Java堆的描述是:所有的对象实例以及数组对象都应当在运行时分配在堆上。数组共和对象永远不可能储存在栈上,因为栈中保存引用的地址,这个引用会指向对象或者数组在堆中的位置。
在方法结束后,堆中 的对象并不会被马上移除,仅仅是在垃圾回收时才会被移除。对GC指向垃圾回收的重点区域。
在Java1.7之前堆内存在逻辑上分为:新生代+养老区+永久区
● 新生区 又被划分为Eden区和Survivor区
● 养老区
● 永久区

在Java1.8后分为:新生区+养老区+元空间
●新生区 Young/New 又被划分为Eden区和Survivor区
● 养老区
● 元空间

年轻代与老年代
在jvm中存储的对象可以被划分为两类:
- 一类是生命周期较短的瞬时对象,之类对象的创建消亡都非常迅速
- 另一类对象的生命周期却非常长,在某些极端的情况下还能够与jvm的上明周期保持一致
Java堆区进一步细分的化还可以划分为YoungGen年轻代和OldGen老年代
其中年轻代又可以划分为Eden空间、Survivor0和Survivor1空间也叫做from、to区

那么对象是如何进行分配的呢?
为对象分配内存是意见非常严谨和复杂的任务,jvm的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC完成垃圾回收后在内存空间产生的内存碎片。
- new的对象先放到Eden也就是伊甸园区,此区域有大小限制
- 当伊甸园区的空间被填满时,程序还在创建新的对象,jvm的垃圾回收器将对伊甸园进行垃圾回收(MinorGc),将伊甸园中不在被其他对象所引用的对象进行回收,再将新家在的对象放入到伊甸园区
- 之后将伊甸园中剩余的对象移动到s0区
- 如果再次触发垃圾回收,此时上次幸存下来的放到s0区的,如果没有被回收就会被放到s1区
- 如果再次经历垃圾回收,此时会从新放回s0区,接着再去s1区
- 进入养老区的次数默认是15次
- 在养老区,相对悠闲.当养老区的内存不足时,再次触发Gc(MajorGc)进行养老区的内存清理
- 若在养老区执行了MajorGc之后发现依旧无法进行对象的保存就会报oom异常
● 针对幸存者s0,s1区的总结:复制之后有交换,谁空谁是to
● 关于垃圾回收:频繁在新生区收集,很少在老年代收集,几乎不再永久代和元空间进行收集
相关文章:
Jvm -堆对象的划分
堆对于一个jvm进程来说是唯一的,一个进程只有一个jvm,但是进程半酣多个线程,多个线程共享一个堆。 也就是说,一个jvm实例只存在一个堆,同时对也是Java内存管理的核心区域。 Java堆区域的大小在jvm启动时就已经被确定…...
2023美赛F题讲解+数据领取
我们给大家准备了F题的数据,免费领取!在文末 国内生产总值(GDP)可以说是一个国家经济健康状况最著名和最常用的指标之--。它通常用于确定一个国家的购买力和获得贷款的机会,为各国提出提高GDP的政策和项目提供动力。GDP“衡量一个国家在给定时间段内生产…...
【博客625】keepalived开启garp refresh的重要性
keepalived开启garp refresh的重要性 1、场景 1-1、对keepavlied master机器热迁移后出现vip不通,过后恢复 原因:机器迁移后网关那边的arp表没有刷新,流量还是转发到老的端口,但是机器已经迁移到别的端口了,于是网络…...
nginx防护规则,拦截非法字符,防止SQL注入、防XSS,nginx过滤url访问,屏蔽垃圾蜘蛛,WordPress安全代码篇
nginx防护规则,拦截非法字符,防止SQL注入、防XSS,nginx过滤url访问,屏蔽垃圾蜘蛛,WordPress安全代码篇 精心强化,小白一键复制 资源宝分享:www.httple.net 宝塔为例:/www/server/panel/vhost/nginx/你的网站域名.conf,复制代码点击保存 修改www.xx.net你自己域名incl…...
【计算机网络】网络层
文章目录网络层概述网络层提供的两种服务IPv4地址IPv4地址概述分类编址的IPv4地址划分子网的IPv4地址无分类编址的IPv4地址IPv4地址的应用规划IP数据报的发送和转发过程静态路由配置及其可能产生的路由环路问题路由选择路由选择协议概述路由信息协议RIP的基本工作原理开放最短路…...
产品经理知识体系:1.什么是互联网思维?
互联网思维 思考 笔记 用户思维 是要注重用户体验,产品带给用户的价值是什么,是能帮助用户获取想要的商品、解决生活中的问题、获取想要的信息,还是产品能通过兜售参与感、满足感等来满足用户的心理需求。 贯穿产品的整个生命周期过程。 简…...
【数据结构】单链表的接口实现(附图解和源码)
单链表的接口实现(附图解和源码) 文章目录单链表的接口实现(附图解和源码)前言一、定义结构体二、接口实现(附图解源码)1.开辟新空间2.头插数据3.头删数据4.打印整个单链表5.尾删数据6.查找单链表中的数据7…...
TikTok话题量超30亿,这款承载美好记忆的剪贴簿引发讨论
回忆风剪贴簿在TikTok引起关注小超在浏览超店有数后台时发现,有一款平平无奇的剪贴簿的种草视频爆火,在24h内收获了9.9K点赞,播放量更是突破了100W,直接冲到了【种草视频飙升榜】第六名的位置,并且这个数字目前仍在继续…...
了解Dubbo
1.注册中心挂了,消费者还能不能调用生产者? 注册中心挂了, 消费者依然可以调用生产者。生产者和消费者都会在本地缓存注册中心的服务列表,当注册中心宕机时,消费者会读取本地的缓存数据,直接访问生产者&am…...
2023年前端面试知识点总结(JavaScript篇)
近期整理了一下高频的前端面试题,分享给大家一起来学习。如有问题,欢迎指正! 1. JavaScript有哪些数据类型 总共有8种数据类型,分别是Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt Null 代表的含义是空对象…...
jQuery
文章目录jQuery 介绍初体验核心函数jQuery 对象和 dom 对象区分什么是 jQuery 对象,什么是 dom 对象问题:jQuery 对象的本质是什么?jQuery 对象和 Dom 对象使用区别Dom 对象和 jQuery 对象互转(重点)jQuery 选择器&…...
强化学习基础概念
强化学习入门 入门学习第一周:基础概念 经验回放: 将sss,agent当前步的action环与境的交互rrr以及下一步的状态st1s_{t1}st1组成的四元组[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wxhVd0dn-1676710992983)(null)] 组…...
Redis学习【9】之Redis RDB持久化
文章目录一 AOF(Append Only File) 持久化二 AOF 基础配置2.1 AOF的开启2.2 文件名配置2.3 混合式持久化开启2.4 AOF 文件目录配置三 AOF 文件格式3.1 Redis 协议3.2 查看 AOF 文件3.3 清单文件3.4 Rewrite 机制3.4.1 rewrite简介3.4.2 rewrite 计算策略3.4.3 手动开启 rewrite…...
分析 vant4 源码,学会用 vue3 + ts 开发毫秒级渲染的倒计时组件,真是妙啊
2022年11月23日首发于掘金,现在同步到公众号。11. 前言大家好,我是若川。推荐点右上方蓝字若川视野把我的公众号设为星标。我倾力持续组织了一年多源码共读,感兴趣的可以加我微信 lxchuan12 参与。另外,想学源码,极力推…...
事件驱动型架构
事件驱动型架构是一种软件设计模式,其中微服务会对状态变化(称为“事件”)作出反应。事件可以携带状态(例如商品价格或收货地址),或者事件也可以是标识符(例如,订单送达或发货通知&a…...
20222023华为OD机试 - 不含 101 的数(Python)
不含 101 的数 题目 小明在学习二进制时,发现了一类不含 101 的数, 也就是将数字用二进制表示,不能出现 101 。 现在给定一个正整数区间 [l,r],请问这个区间内包含了多少个不含 101 的数? 输入 输入一行,包含两个正整数 l l l, r r r...
杭州电子科技大学2023年MBA招生考试成绩查询和复查申请的通知
根据往年的情况,2023杭州电子大学MBA考试初试成绩可能将于2月21日公布,最早于20号出来,为了广大考生可以及时查询到自己的分数,杭州达立易考教育为大家汇总了信息。根据教育部和浙江省教育考试院关于硕士研究生招生考试工作的统一…...
电子技术——CS和CE放大器的高频响应
电子技术——CS和CE放大器的高频响应 在绘制出MOS和BJT的高频响应模型之后,我们对MOS和BJT的高频响应有了进一步的认识。现在我们想知道的是在高频响应中 fHf_HfH 的关系。 高频响应分析对电容耦合还是直接耦合都是适用的,因为在电容耦合中高频模式下…...
2023年数学建模美赛D题(Prioritizing the UN Sustainability Goals):SDGs 优先事项的选择
正在写,不断更新,别着急。。。 4. SDGs 优先事项的选择 4.1 基于SDG密度分布图选择优先事项 虽然每个可持续发展目标的接近度矩阵和中心性度量的结果是通用的,并创建了基本的可持续发展目标网络,但由于各国在网络的不同部分取得…...
springboot实现项目启动前的一些操作
在服务启动时,做一些操作,比如加载配置,初始化数据,请求其他服务的接口等。 有三种方法: 第一种是实现CommandLineRunner接口 第二种是实现ApplicationRunner接口 第三种是使用注解:PostConstruct 三者使用…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
