使用EMM还是使用AMM

68、轻量级密码认证与感应电机建模控制的创新研究 本文介绍了一种新型轻量级密码认证方法ELWEA和基于混沌大猩猩部队优化器(CGTO)的感应电机建模与控制技术。ELWEA在时间性能和综合处理效率上优于传统加密算法,适用于资源受限的物联网设备和移动支付场景。CGTO通过引入混沌映射优化模型降阶与控制器参数,在50 hp感应电机及驱动模型实验中表现出优异的收敛性、稳定性和低误差特性。该技术可广泛应用于工业自动化与电动汽车领域。未来发展方向包括算法优化、多目标控制及与人工智能融合的智能自适应调整。 阅读详情
动态内存管理DMM(Dynamic Memory Management)是从Heap中直接分配内存和回收内存。

有两种方法实现动态内存管理。

一是显示内存管理EMM(Explicit Memory Management)。
在EMM方式,内存从Heap中进行分配,用完后手动回收。程序使用malloc()函数分配整数数组,并使用free()函数释放分配的内存。

二是自动内存管理AMM(Automatic Memory Management)。
AMM也可叫垃圾回收器(Garbage Collection)。Java编程语言实现了AMM,与EMM不同,Run-time system关注已分配的内存空间,一旦不再使用,立即回收。

无论是EMM还是AMM,所有的Heap管理计划都面临一些共同的问题和前在的缺陷:
1)内部碎片(Internal Fragmentation)
当内存有浪费时,内部碎片出现。因为内存请求可导致分配的内存块过大。比如请求128字节的存储空间,结果Run-time system分配了512字节。

2)外部碎片(External Fragmentation)
当一系列的内存请求留下了数个有效的内存块,但这些内存块的大小均不能满足新请求服务,此时出现外部碎片。

3)基于定位的延迟(Location-based Latency)
延迟问题出现在两个数据值存储得相隔很远,导致访问时间增加。

EMM往往比AMM更快。
EMM与AMM比较表:
——————————————————————————————————————
                                 EMM                                        AMM
——————————————————————————————————————
Benefits     尺寸更小、速度更快、易控制         stay focused on domain issues
Costs        复杂、记账、内存泄露、指针悬空           不错的性能
——————————————————————————————————————

早期的垃圾回收器非常慢,往往占用50%的执行时间。

垃圾回收器理论产生于1959年,Dan Edwards在Lisp编程语言的开发时实现了第一个垃圾回收器。

垃圾回收器有三种基本的经典算法:

1)Reference counting(引用计数)
基本思想是:当对象创建并赋值时该对象的引用计数器置1,每当对象给任意变量赋值时,引用记数+1;一旦退出作用域则引用记数-1。一旦引用记数变为0,则该对象可以被垃圾回收。
引用记数有其相应的优势:对程序的执行来说,每次操作只需要花费很小块的时间。这对于不能被过长中断的实时系统来说有着天然的优势。
但也有其不足:不能够检测到环(两个对象的互相引用);同时在每次增加或者减少引用记数的时候比较费时间。
在现代的垃圾回收算法中,引用记数已经不再使用。

2)Mark-sweep(标记清理)
基本思想是:每次从根集出发寻找所有的引用(称为活对象),每找到一个,则对其做出标记,当追踪完成之后,所有的未标记对象便是需要回收的垃圾。
也叫追踪算法,基于标记并清除。这个垃圾回收步骤分为两个阶段:在标记阶段,垃圾回收器遍历整棵引用树并标记每一个遇到的对象。在清除阶段,未标记的对象被释放,并使其在内存中可用。

3)Copying collection(复制收集)
基本思想是:将内存划分为两块,一块是当前正在使用;另一块是当前未用。每次分配时使用当前正在使用内存,当无可用内存时,对该区域内存进行标记,并将标记的对象全部拷贝到当前未用内存区,这是反转两区域,即当前可用区域变为当前未用,而当前未用变为当前可用,继续执行该算法。
拷贝算法需要停止所有的程序活动,然后开始冗长而繁忙的copy工作。这点是其不利的地方。

近年来还有两种算法:

1)Generational garbage collection(分代)
其思想依据是:
  (1) 被大多数程序创建的大多数对象有着非常短的生存期。
  (2) 被大多数程序创建的部分对象有着非常长的生存期。
简单拷贝算法的主要不足是它们花费了更多的时间去拷贝了一些长期生存的对象。
而分代算法的基本思想是:将内存区域分两块(或更多),其中一块代表年轻代,另一块代表老的一代。针对不同的特点,对年轻一代的垃圾收集更为频繁,对老代的收集则较少,每次经过年轻一代的垃圾回收总会有未被收集的活对象,这些活对象经过收集之后会增加成熟度,当成熟度到达一定程度,则将其放进老代内存块中。
分代算法很好的实现了垃圾回收的动态性,同时避免了内存碎片,是目前许多JVM使用的垃圾回收算法。

2)Conservative garbage collection(保守)

哪一种算法最好?答案是没有最好。

EMM作为很常用的垃圾回收算法,有5种基本方法:
1)Table-driven algorithms
表驱动算法把内存分为固定尺寸的块集合。这些块使用抽象数据结构进行索引。比如一个bit对应一个块,用0和1表示是否分配。不利因素:位映射依赖于内存块的尺寸;另外,搜索一系列的空闲内存块可能需要搜索整个bit映射表,这影响性能。

2)Sequential fit
顺序适应算法允许内存分为不同的尺寸。此算法跟踪已分配和空闲的Heap,标记空闲块的起始地址和结束地址。它有三种子分类:
  (1) First fit(首次适应)——分配找到的第一个适合内存请求的块
  (2) Best fit(最佳适应)——分配最适合内存请求的块
  (3) Worst fit(最不适应)——分配最大的块给内存请求

3)Buddy systems
Buddy systems算法的主要目的是加速已分配内存在释放后的合并速度。显示内存管理EMM使用Buddy systems算法可能导致内部碎片。

4)Segregated storage
隔离存储技术涉及到把Heap分成多个区域(zone),并为每个区域采用不同的内存管理计划。这是很有效的方法。

5)Sub-allocators
子配置技术尝试解决在Run-time System下分配大块内存并单独管理的内存分配问题。换句话说,程序完全负责自己的私有存储堆(stockpile)的内存分配和回收,无需run-time System的帮助。它可能带来额外的复杂性,但是你可以显著地提高性能。在1990年的《C Compiler Design》一书中,Allen Holub就极好地利用了Sub-allocators来加速其编译器的实现。

注意,显示内存管理EMM必须是灵活的,能够响应数种不同类型的请求。

最后,使用EMM还是使用AMM?这是一个Religious question,凭个人喜好。EMM在复杂的开销下实现了速度和控制。AMM牺牲了性能,但换来了简单性。

从Mule ESB到Apache Camel:手把手教你设计一个轻量级企业集成框架的‘心脏’ 本文深入探讨了从Mule ESB到Apache Camel的轻量级企业集成框架设计实践,对比了两者在协议支持、消息处理能力和部署灵活性等方面的差异。通过实际代码示例和性能优化技巧,帮助开发者构建高效的核心模块,适用于现代微服务架构下的系统集成需求。 阅读详情

相关推荐

新能源场站必看:一次调频与AGC/AVC的协同控制逻辑解析(含典型拓扑图)

本文深度解析了新能源场站中一次调频与AGC/AVC的协同控制逻辑。针对电网频率与电压稳定需求,详细阐述了三者在响应时序、控制目标上的分工与配合,并重点剖析了以RCL-0923装置为核心的指令融合架构与典型拓扑,为场站实现高效、稳定的协同运行提供了清晰的实践指导。

brown的博客 1056

动态内存管理

动态内存管理动态内存管理DMM(Dynamic Memory Management)是从Heap中直接分配内存和回收内存。有两种方法实现动态内存管理。一是显示内存管理EMM(Explicit Memory Management)。在EMM方式,内存从Heap中进行分配,用完后手动回收。程序使用malloc()函数分配整数数组,并使用free()函数释放分配的内存。二是自动内存管理AMM(Aut

chszs的专栏 5784

开源收银系统_大型收银系统源码_OctShop

开源收银系统正成为大型连锁企业数字化转型的关键工具。相比传统闭源系统,开源方案具有成本低(年均降本60%+)、定制灵活(支持多业态协同)、自主可控等优势,能有效解决高并发、多门店数据同步等痛点。核心价值在于:1)分布式架构适配规模化扩张;2)模块化设计实现个性化开发;3)开放接口打通ERP/CRM等系统。典型案例显示,连锁商超通过源码二次开发实现库存实时同步,补货效率提升50%;餐饮集团统一多业态收银流程后会员复购率增长35%。选型需关注源码成熟度、技术兼容性和安全合规,建议采用"开源+服务商&q

OctShop全栈工程师 938

CMU15-213学习笔记(七)Dynamic Memory Allocation

CMU15-213学习笔记(七)Dynamic Memory Allocation 动态内存分配 程序员通过动态内存分配(例如 malloc)来让程序在运行时得到虚拟内存。动态内存分配器会管理一个虚拟内存区域,称为堆(heap)。 动态内存分配器将堆视为一组不同大小的块(block)的集合,每个块就是一个连续的虚拟内存片(chunk),每个块具有两种状态: **已分配:**已分配的块能为应用程序所用,且块会保持已分配状态直到被释放 **空闲的:**空闲的块无法使用,直到它被分配 在最开始进行内存映射时

qq_45698833的博客 1494

FreeRTOS笔记(十五)FreeRTOS总结

文章目录01 - 裸机和FreeRTOS区别1.1 - 裸机1.2 - FreeRTOS1.3 - 区别02 - 对FreeRTOS的感受03 - 推荐 上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知 01 - 裸机和FreeRTOS区别   学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,...

单眼皮根号三的博客 4112

Bulk / Smart-seq2数据分析一般流程

Bulk RNA-seq(RNA-Seq of bulk samples)是一种RNA-Seq技术应用,它是通过将整个组织或细胞群体的RNA提取并混合,进行高通量测序来分析基因表达的技术。转录本定量结果可以用于后续的差异表达分析和聚类分析。功能注释和富集分析:对差异表达基因进行功能注释和富集分析,以帮助理解差异表达基因的功能和调控网络,从而获得对研究样品的更深入的理解。数据可视化:最后,将聚类分析的结果进行可视化,可以使用常见的数据可视化工具,如ggplot2、Plotly等,来帮助用户更好地理解数据。

weixin_54519672的博客 5348

内存术语详解

    你可能听到或读到过expanded memory(扩充内存),EMs,Extended memory(扩展内存),XMS,EMM,UMB,HMA,VCPI,以及DPMI这些术语。为解释诸程序如何被分配来访问1MB以外的内存,本篇将定义这些术语,这样当这些概念同后面各篇相联系时你就熟悉它们了。正如我们现今所知道的那样Pc机的体系结构以完全可使用的1024K(1MB)内存空间为基础。就DOS而

小温的专栏 3846

【WRF工具】WRF 模型输出可视化工具 RIP4

【WRF工具】WRF 模型输出可视化工具 RIP4

WW、forever的博客 1594

DM8168 DMM/TILER简介

DM8168 DMM/TILER简介 1.概述 如图4-1,DMM定位在SDRAM控制器的前端,是所有initiator产生的内存存取的接口。          动态内存管理器DMM,是一个专门的管理模块,广义上说,包括内存存取的方方面面。比如:  initiator索引化的优先级产生。 多区域SDRAM内存交织配置块目标传输优化:tiling和子tiling集中的低延迟页翻译:类

shanghaiqianlun的专栏 7302

第4-4课:状态压缩与动态规划

什么是状态压缩 动态规划问题中重要的一环就是确定状态的定义,在大多数情况下,状态中所包含的信息并不多,比如线性规划问题的状态一般表示为 d[i,j](i 表示状态的位置,j 表示状态的阶段),算法实现时可用二维数组保存计算过程中的状态。但是也有一些问题,它的状态中包含的信息很多,比如它的状态可能是一个集合中各个元素的情况,或者是像铺瓷砖问题这样,是某一行的覆盖状态。如果沿用简单的状态表示方法,则可...

oRbIt 的专栏 700

PX4从放弃到精通(二十一):使用git管理PX4代码

文章目录前言一、设置git密钥二、将代码上传至gitee 前言 Ubuntu 18.04 PX4 1.11.3 由于github有时网速较慢,本文使用gitee。 一、设置git密钥 ssh-keygen -t rsa -C “your_email@youremail.com” your_email@youremail.com为自己注册的gitee账户邮箱.设置路径与密码时,也直接回车不设置,如下图,密钥生成的位置在红框处. 在密钥目录下按Ctrl+H显示隐藏文件,进入.ssh文件夹用gedit打开id

超维空间科技的博客 3476

AMM算法简要理解(Adleman-Mander-Miller Method)

AMM算法的简要计算思路

shshss64的博客 2684

YOLOv11 改进 - SPPF模块 | 发论文神器!LSKA注意力改进SPPF,增强多尺度特征提取能力,高效涨点!!!

本文介绍了Large Separable Kernel Attention (LSKA)模块及其在YOLOv11中的结合应用。LSKA旨在解决Visual Attention Networks (VAN)使用大内核卷积时的计算效率问题,通过将2D深度卷积层的卷积核分解为级联的水平和垂直1-D卷积核,降低了计算复杂度和内存占用,且使VAN更关注物体形状。我们将集成LSKA的SPPF_LSKA模块引入YOLOv11,大量实验表明,改进后的模型在对象识别、检测、分割和稳健性测试上表现出色。

魔改工程师的博客 1279

内存溢出问题

android oom 全解析 转载 http://www.cnblogs.com/manuosex/p/3661762.html     Android oom 有时出现很频繁,这一般不是Android设计的问题,一般是我们的问题。   就我的经验而言,出现oom,无非主要是以下几个方面:   一、加载对象过大   二、相应资源过多,没有来不及释放。   解决这样的问题,也有一下几...

yoyo_0316的博客 327

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android OOM异常解决方案

一,什么是OOM异常: OOM(out of Memory)即内存溢出异常,也就是说内存占有量超过了VM所分配的最大,导致应用程序异常终止; 二,为什么会产生OOM异常呢? OOM异常是Android中经常遇到的一个问题,程序员稍微不注意可能就导致其产生。通常OOM都发生在需要用到大量内存的情况下,因为Android的每一个应用都是一个Davlik...

453

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

关于 android oom(内存溢出的分析)

laozhu1124 android oom 全解析   Android oom 有时出现很频繁,这一般不是Android设计的问题,一般是我们的问题。   就我的经验而言,出现oom,无非主要是以下几个方面:   一、加载对象过大   二、相应资源过多,没有来不及释放。   解决这样的问题,也有一下几个方面:   一:在内存引用上做些处理,常用的有软

GardenWolf的专栏 982

基于F3P_DR1M90的安路SD卡demo SD卡初始化流程详解

本篇中使用的demo与上一篇文章相同,项目概述与环境准备内容一致,故跳过介绍。上一篇介绍sd卡读写demo 的大致流程以及主要代码,本篇主要是对SD卡初始化流程进行详细的介绍。

米联客(milianke) 258

[acmm week12]染色(容斥定理+组合数+逆元)

[acmm week12]染色(容斥定理+组合数+逆元) 1003 染色 Time Limit: 1sec Memory Limit:256MB Description 今天离散数学课学了有关树的知识,god_v是个喜欢画画的人,所以他喜欢对于一棵树上色,且相邻节点不能染...

qq_25768269的博客 247

【acmm】一道简单的数学题

【acmm】一道简单的数学题 emm卡常 我本来写成了这个样子: 1 #include<bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 const LL mod = 1e9+7; 6 struct ...

qq_25768269的博客 257

动态内存管理——详解,彻底理解动态内存管理

将在本文中,彻底讲解什么是动态内存分配,如何使用内存分配的函数,以及常见的动态内存分配的错误。此外,还将拓展讲解柔型数组的动态内存分配,了解什么柔性数组

jupangMZ的博客 1557

AMM算法

在这篇paper中推导了AMM算法,给出了如何在有限域中开2次,甚至n次方根问题的算法。本文先介绍AMM算法是如何在有限域中开2次方根的问题,然后在介绍在有限域中开n次方根。本文所涉及的模数均为素数。

qq_63016521的博客 1478
上一篇: CE-HTML
下一篇: 时区
rubyzhudragon
博客等级 码龄18年 18粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值