【JVM学习笔记】内存分配

冰河木马实验(V8.4) 简述: 百科词条 冰河木马开发于1999年,跟灰鸽子类似,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,跟后来的灰鸽子等等成为国产木马的标志和代名词。 冰河的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。其中攻击者使用G-client.e... 阅读详情

堆内存区域划分(JDK1.7)

 

内存分配策略

1、对象优先分配到eden

2、大对象直接分配到老年代

3、长期存活的对象分配到老年代

4、空间分配担保(内存不够去别的地方借)

5、动态对象年龄判断

 

虚拟机参数:

-verbose:gc 输出虚拟机GC信息

-XX:+PrintGCDetails 打印GC详细信息

-XX:+UseSerialGC 使用Serial收集器

-Xms20M -Xmx20M

-Xmn10M 指定新生代内存

-XX:SurvivorRatio=8 指定eden区域的比例

 

Minor GC和Full GC的触发条件

Minor GC:当Eden区满时触发。

Full GC:

1、调用System.gc()系统建议执行Full GC,但不是必然执行、

2、老年代空间不足、

3、方法区空间不足、

4、通过Minor GC后进入老年代的平均大小大于老年代的可用内存

5、由Eden区、From Space区向To Space区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小

 

大内存直接进入老年代

-XX:PretenureSizeThreshold 设置老年代的大小

 

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

-XX:MaxTenuringThreshold 默认15

age 进入 eden初始为1,每经历一次垃圾回收,age+1

 

空间分配担保

当新生代内存不够用,借用老年代进行空间分配担保,虚拟机默认启用。

Minor GC之前虚拟机会检查老年代最大可用连续空间是否大于新生代所有对象总空间,如果成立,Minor GC可以确保是安全的。若不成立,查看是否设置参数允许担保失败,如果允许,则检查老年代最大连续可用空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试进行一次Minor GC,尽管是有风险的;如果小于或者参数设置不允许冒险,那就要进行一次Full GC了。

也要保证老年代能够容纳对象大小

-XX:+HandlePromotionFailure 开启

-XX:-HandlePromotionFailure 禁用(减号)

 

动态对象年龄判断

虚拟机并不是永远要求对象达到设定的年龄才能晋升到老年代,如果Survivor空间中相同年龄所有对象大小总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代了。

 

Minor GC和Full GC区别:

新生代GC:Minor GC是指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以Minor GC非常的频繁,一般回収速度也比较快。

老年代GC:Full GC或Major GC是指发生在老年代的GC,出现本GC通常会伴随至少一次Minor GC(但非绝对),Full GC的速度一般会比Minor GC慢10倍以上。

 

逃逸分析与栈上分配

逃逸:是指在某个方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其它变量引用到;这样带来的后果是在该方法执行完毕之后,该方法中创建的对象将无法被GC回收,由于其被其它变量引用。正常的方法调用中,方法体中创建的对象将在执行完毕之后,将回收其中创建的对象;故由于无法回收,即成为逃逸。

栈上分配:主要是指在Java程序的执行过程中,在方法体中声明的变量以及创建的对象,将直接从该线程所使用的栈中分配空间。 一般而言,创建对象都是从堆中来分配的,这里是指在栈上来分配空间给新创建的对象。

-XX:+DoEscapeAnalysis 是否打开逃逸分析依赖于以下JVM的设置

 

JDK1.8的变化

视频流推理的工程架构:YOLO模型如何做到单卡处理16路1080P实时流? <think>我们只需要根据内容生成摘要,不超过150字。内容是关于YOLO模型单卡处理16路1080P实时流的技术分析,包括方案对比、架构设计等。摘要要简洁,突出关键点。</think>本文深度解析了YOLO模型单卡处理16路1080P实时流的技术方案,对比EagleEye、TensorRT+DeepStream、华为CANN及RK3588四条路线,重点介绍流水线架构、并发模型及显存优化,指出消费级显卡(如RTX 4090)即可实现高并发智能视觉分析。 阅读详情

相关推荐

Claude + Figma MCP 实战教程

• 拥有 Figma 的 Dev 或 Full seat(专业/企业账号)权限 才能启用 Dev-Mode MCP 服务 。• MCP 是通过标准接口连接 Claude 与 Figma,效率高,但目前仍为 Beta,稳定性可能有限。3. 服务启动后,会在本地运行,比如 http://127.0.0.1:3845/mcp 。如果设置正确,会显示已连接的 figma-dev-mode-mcp-server  。• 如果多次转换复杂组件,可能需要多次选择与多次生成,建议合理拆分设计任务。

weixin_49869937的博客 4451

【JVM】8_对象优先在Eden分配

/** * VM参数有这些: * -verbose:gc : 表示输出虚拟机中GC的详细情况,输出像: [Full GC 168K->97K(1984K), 0.0253873 secs] * -Xms20M : 堆内存最小值(单位M) * -Xmx20M : 堆内存最大值(单位M) * -Xm

KK_GKD的博客 621

西门子840D新建项目

1、需要一个32位的WIN7或者XP系统,并且已经在系统中安装完成西门子840Dsl开发包和VS2008。(我采用的是XP系统虚拟机) 2、在开始->所有程序找到如下位置 3、在这个位置打开Visual Studio 4、文件->新建->项目 名称和位置都可以随意更改,点击确定。 5、在左侧选择第二个选项进入下面的界面 点击“Add Screen”按钮 可以修改“class name”然后点击“OK”返回上一个界面,再点击“Add Form” 可以修...

qq_36987047的博客 1861

JVM 中的内存如何分配及相应的命令设置

JVM 中的内存如何分配及相应的命令设置

timchen525的专栏 4497

攻防世界:Crypto习题之easy_RSA

在非对称加密算法中,单向函数被广泛应用,用于确保从公钥加密后的密文无法轻易推导出私钥,从而保证数据的安全性。而其中最著名的算法便是 RSA 加密算法。首先设φm:=∣1≤k≤mgcdkm1∣为欧拉函数(Euler’sche Phi-function)。pqn:=pqpqφnnpqpqφnp−1q−1e∈12...φn−1gcdφne1ended≡1φn假设我们现在有明文x以及公钥en。

qq_52789488的博客 1574

JVM学习笔记-JVM内存分配问题

分代模型分为 老年代 年轻代 永久代 回收过程 当开始执行一个方法的时候,创建一个栈帧将其压入栈中,如图所示,当执行完成之后弹出栈帧,此时该栈帧与堆内存无关,所以回收线程可对堆内存实例化的资源进行回收 改造代码 此时我们将其改造一下 老年代与年轻代 将这个变量变成全局变量,此时,就会引出两个概念[年轻代]和[老年代] 年轻代就是创建很快就被回收的对象 老年代就是很久不被回收的对象 比如说案例一中不断新建不断回收-,就是一直在年轻代。 但是案例二创建了静态全局变量,这个对象一开始处于年轻代,不久之

xiaoko81 406

【QCA6174】QCA6174 DFS认证的时候会有概率信道不会跳转的情况,通常跳转成功概率只有25%问题分析及解决方案

Master设备需要测试的项目。

wgl307293845的博客 753

JVM 学习笔记 (八) 内存分配策略

对象的内存是在堆上分配的(但也有可能经过 JIT 编译后被拆散为标量类型并间接地在栈上分配),对象主要分配在 Eden 区上,如果启动了本地线程分配缓冲,将按线程优先在 TLAB (TLAB 是 Eden 区中的一个区域)上分配。少数情况下也可能直接分配在老年代中,分配的具体规则取决于使用的是哪一种垃圾收集器组合,以及相关JVM参数的设置。 对象的内存分配规则并不是一成不变的,下面给出了几种最普遍...

叶自飘零水自流的的博客 216

如何解决群晖Docker注册表查询失败/无法拉取镜像等问题

如何解决群晖Docker注册表查询失败/无法拉取镜像等问题

XiaoqiangClub的博客 1万+

SAP 实施:Waterfall vs. Agile —— 一场“结构性矛盾“的深刻比较先说结论:在 SAP 世界里,这从来不是“谁更好“的宗教问题,而是“你的项目 DNA 是什么“的战略选择。​

SAP 实施:Waterfall vs. Agile —— 一场"结构性矛盾"的深刻比较 先说结论:在 SAP 世界里,这从来不是"谁更好"的宗教问题,而是"你的项目 DNA 是什么"的战略选择。​ SAP 早已用 SAP Activate​ 给出了官方态度——它不是纯 Agile,也不是回头去搞旧 Waterfall,而是一个带质量门的混合架构。 1. 先回到本质:两者解决的是不同维度的风险 维度 Waterfall(传统 ASAP 路线)​ Agile(SCRUM/Kanban 式迭代)​

金牌架构师 337

JVM虚拟机学习笔记之-4.内存分配

对虚拟机内存模型、分配和配置参数的研究

xingzhes_的博客 328

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JVM学习笔记之内存分配与回收

对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并简介地在栈上分配),独享主要分配之新生代的Eden区上,如果启动了本地线程分配缓存,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数的设置。 1.对象优先分配在Eden区 大多数情况下,对象在新生代Eden中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起...

weixin_58890822的博客 166

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JVM学习笔记-对象内存分配过程

老年代空间分配担保机制: 在minor gc时,检查老年代剩余可以空间是否大于年轻代里的所有对象(包含垃圾和非垃圾)。如果大于等于,则做minor gc。如果小于,在看下是否配置了担保参数,-xx: -HandlePromotionFailure, 如果配置了,那么判断老年代剩余空间是否小于历史每次minor gc后进入老年代的对象的平均大小,如果是,进行full goc, 减少一次minor gc。 如果不是执行minor gc. 如果没有任何担保,直接进行full gc.对象逃逸分析 Test1方法中创

weixin_37717746的博客 311

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JVM学习笔记(三)JVM垃圾回收算法及内存分配策略

今天巩固并记录下JVM垃圾回收算法及内存分配策略。JVM将存储对象的内存分为两块---新生代和老年代。其中新生代使用的是复制算法而老年代使用的是标记-整理算法。 复制算法 复制算法会将内存等量地分成两块,每次只使用其中的一块。当一块内存用完了就将还存活的对象复制到另一块上面之后将已使用过的内存清理掉。过程如下图: 新生代的内存会被分为两个区域---Eden区和Survivor区,每次都只...

zch-兴趣使然-blog 335

JVM学习笔记20190128-内存分配与回收策略

                                      内存分配与回收策略 摘抄自:周志明. 深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)   对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC 新生代采用的是复制收集算法 Minor GC和Full GC有什么不一样...

u010016770的博客 232

JVM深入学习笔记四:JVM垃圾收集和内存分配

1

three_man的专栏 5276

JVM学习笔记2 垃圾收集器与内存分配策略

一、对象已死? 垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有哪些还“活着”,哪些已经“死去”(即不可能再被任何途径使用的对象) 1、根搜索算法(GC Roots Tracing) 算法的基本思路是:通过一些名为“GC Roots” 的对象作为起始点,从这些节点向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时

yameing在努力学习中... ... 1299

JVM内存分配机制与回收策略选择-JVM学习笔记(2)

Java体系中的自动内存管理主要包括了2个方面: 自动地给对象分配内存。 自动地回收分配给对象地内存。 本文也围绕这两个点展开 一. 内存分配规则 1.优先在Eden区分配 大多数情况下,JVM会在 Eden 区优先分配对象,如果 Eden 没有足够的空间,则进行一次 Minor GC 。通过参数 -XX:+PrintGCDetails 可以让虚拟机在进行垃圾回收时打印日志,方便我们...

达达的博客 228

JVM学习笔记5:内存分配

一:jvm的内存简化架构   二:运行时数据区     Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机的退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程的开始和结束而创建和销毁。其分为pc寄存器(程序计数器)、java虚拟机栈、Java堆、方法区、运行常量池、本地方法栈   PC(Program C...

u010800970的专栏 262

java虚拟机学习笔记1-jvm的逻辑内存分配

java虚拟机学习笔记1-jvm的逻辑内存分配 声明 博客内所有“java虚拟机学习笔记”系列的文章,均出自《深入理解java虚拟机-JVM高级特性与最佳实践-周志明》   java虚拟机在执行java程序的过程中把他所管理的内存划分成不同的逻辑数据区域,这些区域各有用途,特点不同,以下是根据《java虚拟机规范(第3版)》中规定的jvm运行时数据区域   对于以上各个区域的详细说...

iteye_816的博客 114

深入理解JVM学习笔记之垃圾收集器与内存分配策略(一)

深入理解JVM学习笔记之垃圾收集器与内存分配策略(一) 确定对象是否存活算法 引用计数法:给对象添加一个引用计数器,当一个地方引用它时,计数器值就+1;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不再被使用的。 优点:实现简单,判定效率高。 缺点:很难解决对象间循环引用问题。如:对象objA.instance=objB; objB.instance=objA; 除此以外这两个对象再无...

qq_42262775的博客 257

jvm学习笔记二(java内存分配策略和回收策略)

1,内存分配的位置 新的对象主要分配在java堆新生代上,极少数分配到老年代。 分配在eden区的内存进行回收的时候发生minor gc(只回收新生代,速度快) 大对象对java虚拟机来说是一个坏消息,容易导致gc提前触发。 因此程序中要避免大量朝生夕死的大对象, jvm提供一个参数-XX:PretenureSizeThreshold,设置超过这个阈值的对象直接在老年代分配

xingyunLOST的专栏 667

JVM学习笔记- 3 垃圾收集器与内存分配策略

1.JVM学习笔记-对象的内存分配Java创建对象会存储到JVM堆中。对象的内存分配也可以说是JVM堆的内存分配策略。 JVM堆中分为新生代和老年代 JVM堆的大小=新生代+老年代 新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。 老年代中因为对象存活率高、没有额外空间对它进行分配担保,必须使用“标记—清理”或者“标记—整理”

刘越洋子 420

深入理解JVM学习笔记(二十九、JVM 内存分配----空间分配担保策略)

一、概念 空间分配担保我们在二十六章也提到过,当内存分配过程中内存不够,JVM会向老年代借用内存,这就是内存分配担保策略。内存分配担保策略JVM默认是启用的,我么可以用-XX:HandlePromotionFailure来禁用内存分配担保策略。 开启:-XX:+HandlePromotionFailure 关闭:-XX:-HandlePromotionFailure 二、策略 1、当新生...

张--小涛涛 1190

深入理解JVM学习笔记(二十五、JVM 内存分配----概述)

前面我们已经讲到JVM的垃圾回收策略,但是回收的前提是堆内存中有对象数据。那么接下来我们就讲讲JVM在构造对象时候在堆中的内存是如何分配的。 内存分配的整体策略: 接下来几章我们会详细介绍上述策略。...

张--小涛涛 261
上一篇: 【JVM学习笔记】垃圾回收及算法
下一篇: 【JVM学习笔记】垃圾收集器
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值