缩减虚拟机堆空间的方式,缓解32位cpu上虚拟内存地址空间限制导致的内存分配失败崩溃

news2024/11/25 20:18:54

缩减虚拟机堆空间的方式,缓解32位cpu上虚拟内存地址空间限制导致的内存分配失败崩溃

  • 前言
    • Matrix
    • 使用说明
    • 效果验证

前言

瑞芯微平台应用开发,目前RK3288芯片应用还是比较广泛(成本低),它是一个32位cpu,并且线上很多都是2GB Ram板子,导致程序因为内存问题崩溃的比较多。使用了腾讯matrix方案,通过缩减虚拟机堆空间的方式,缓解32位cpu上虚拟内存地址空间限制导致的内存分配失败崩溃。
因为matrix文档写的太粗略了,所以自己记录一下

Matrix

开源地址
Matrix 是一款微信研发并日常使用的应用性能接入框架,支持iOS, macOS和Android。 Matrix 通过接入各种性能监控方案,对性能监控项的异常数据进行采集和分析,输出相应的问题分析、定位与优化建议,从而帮助开发者开发出更高质量的应用。
功能太多了,我只想进行虚拟机堆空间缩减。
ps:线程创建占用内存缩减我测试发现不生效

使用说明

clone源代码,重点关注matrix-hooks模块中GCSemiSpaceTrimmer类,它的JNI实现主要在cpp目录下memory中,主要原理看以下几篇文章即可

整体方案的一个讲解,官方发布的
对虚拟内存分配机制的一个讲解,能够更好帮助理解实现原理

引用到程序中,按照官方知道依赖一大堆东西太麻烦了,直接根据matrix-hooks模块,发布aar(自己简单改了一下对于日志的依赖)。
最后打包生成两个aar,下载地址如下:

matrix hook aar
matrix backtrace aar

项目中依赖这两个aar,在初始化的地方执行以下代码

 //设备版本号小于android8,并且32位操作系统使用此方案(目前来看瑞芯微8.0系统以上主板几乎都是64位,故暂时不是用Patrons方案对8.0以上系统进行处理)
        if (!SystemUtils.is64BitRuntime() && Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
            if (GCSemiSpaceTrimmer.INSTANCE.isCompatible()) {
                GCSemiSpaceTrimmer.INSTANCE.install(0.8f, 60000, null);
            }
        }

第一个参数是虚拟内存使用超过这个阈值进行虚拟内存释放,第二个参数是循环时间(循环检查是否使用超过阈值)

效果验证

执行 top -m -t | grep

未进行缩减前占用虚拟内存
在这里插入图片描述

缩减后占用虚拟内存

在这里插入图片描述
可以看到确实是生效了,就这样。

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

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

相关文章

Halcon中的一些3D算子

一、记录一些Halcon里的关于3D的算子 1.read_object_model_3d 从文件读取一个3d模型 如下图&#xff0c;读的一个ply文件出来是个3d点云模型 2.visualize_object_model_3d 交互式展示3d模型 即上个算子读出来后&#xff0c;通过这个算子可以把3d模型显示出来旋转、平移&am…

SpringFramework 中CollectionUtils 工具类的使用

CollectionUtils是Spring框架中的一个工具类&#xff0c;提供了一系列对集合的操作方法。 import org.springframework.util.CollectionUtils;import java.util.*;public class CollectionUtilDemo {public static void main(String[] args) {//判断一个集合或Map是否为空&…

OWASP ZAP alerts

前提 使用OWASP ZAP对网站进行安全扫描&#xff0c;扫描后发现一些警告。 使用警告名称在百度进行搜索就能看到在OWASP ZAP网站上对应警告的解释。 可以在如下地址输入alert查询 https://www.zaproxy.org/docs/alerts/ Missing Anti-clickjacking Header 见https://www.zap…

SQL Server 2008R2安装图文教程(附SQL Server下载安装包)

SQL Server 2008R2 安装教程 演示系统&#xff1a;Windows server 2008R2 安装包&#xff1a;下载传送门 下载并解压安装包&#xff0c;找到解压的安装包&#xff0c;双击【setup.exe】 如果是你的服务器没有安装.NET Framework 3.5&#xff0c;那会弹出个提示框&#xff0c;…

CODEC 基础知识

&#xfeff; ASDOUT : ADC data output  DSDIN : DAC data input  LRCK : Left/Right data alignment clock  SCLK : Bit clock &#xfeff; MCLK 256 LRCK 或者 MCLK384 LRCK different audio data formats:  I2S …

公司新来了个拿18K出来的测试,让我见识到了什么叫真正的测试扛把子...

今天上班开早会就是新人见面仪式&#xff0c;听说来了个很厉害的大佬&#xff0c;年纪还不大&#xff0c;是上家公司离职过来的&#xff0c;薪资已经达到中高等水平&#xff0c;很多人都好奇不已&#xff0c;能拿到这个薪资应该人不简单&#xff0c;果然&#xff0c;自我介绍的…

如何编写快速高效的SQL查询(四)——优化特定类型的查询与样例

这一节&#xff0c;我们将介绍如何优化特定类型的查询。 本节介绍的多数优化技巧都和特定的版本有关&#xff0c;所以对于未来MySQL的版本未必适用。毫无疑问&#xff0c;某一天优化器自己也会实现这里列出的部分或者全部优化技巧。 优化COUNT()查询 COUNT()聚合函数&#xf…

Hive安装部署

1、Hive安装地址 ①Hive官网地址 Apache Hive ②文档查看地址 GettingStarted - Apache Hive - Apache Software Foundation ③下载地址 Index of /dist/hive ④github地址 GitHub - apache/hive: Apache Hive 2、 安装Hive 1&#xff09;把apache-hive-3.1.3-bin.ta…

“AI换脸”诈骗背后,如何应对黑灰产使用手段?

目录 诈骗是如何发生的&#xff1f; AI换脸诈骗的操作防范 AI换脸的风险分析与技术防范 近日&#xff0c;警方通报了一起使用智能AI技术进行电信诈骗的案件。被骗者是福州市某科技公司法人代表郭先生&#xff0c;他通过微信视频接到自己好友的电话&#xff0c;对方佯装需要借…

帕累托改进和帕累托最优、卡尔多-希克斯改进

根据目标个数&#xff0c;分为单目标规划&#xff0c;以及多目标规划。多目标的规划是去找折中的解集合&#xff0c;既pareto最优解集合。对优化目标超过3个以上的&#xff0c;称之为超多目标优化问题。 帕累托改进描述的就是在没有人变得不好的前提下让有些人更好的过程。帕累…

GPT虚拟直播Demo系列(二)|无人直播间实现虚拟人回复粉丝

摘要 虚拟人和数字人是人工智能技术在现实生活中的具体应用&#xff0c;它们可以为人们的生活和工作带来便利和创新。在直播间场景里&#xff0c;虚拟人和数字人可用于直播主播、智能客服、营销推广等。接入GPT的虚拟人像是加了超强buff&#xff0c;具备更强大的自然语言处理能…

Postman 接口测试神器

Postman 接口测试神器 Postman 是一个接口测试和 http 请求的神器&#xff0c;非常好用。 官方 github 地址: Postman Inc. GitHub Postman 的优点&#xff1a; 支持各种的请求类型: get、post、put、patch、delete 等支持在线存储数据&#xff0c;通过账号就可以进行迁移…

HY-M5 三维机器视觉系统在工业自动化生产的应用

行业背景&#xff1a; 如今科学技术有了日新月异的变化&#xff0c;工业自动化也在不断地发展。然而&#xff0c;在高强度、高精准的工作环境下&#xff0c;人工操作已经不能适应企业的发展需求&#xff0c;于是机器人的出现便提供了高效快捷的解决方案。为了实现自动化生产并确…

AUTOSAR通信篇 - CAN网络通信(二:CanIf)

在上一篇&#xff0c;我们介绍了CAN模块&#xff0c;接下来我们介绍在CAN模块之上的模块Can Interface&#xff08;CanIf&#xff09;模块。在AUTOSAR软件架构中&#xff0c;CanIf也在BSW层&#xff0c;它处于CAN模块之上紧挨着CAN模块。CanIf是一个硬件独立层&#xff0c;具有…

【MySQL】如何实现单表查询?

在我们对数据进行操作时&#xff0c;查询无疑是至关重要的&#xff0c;查询操作灵活多变&#xff0c;我们可以根据开发的需求&#xff0c;设计高效的查询操作&#xff0c;把数据库中存储的数据展示给用户。 文章目录 前言1. 基础查询1.1 基础查询语法1.2 基础查询练习 2. 条件查…

算法与数据结构-复杂度分析(上)

文章目录 什么是大 O 复杂度表示法为什么要用大 O 复杂度表示法如何分析一段代码的时间复杂度1、只关注循环执行次数最多的一段代码2、加法法则&#xff1a;总复杂度等于量级最大的那段代码的复杂度3、乘法法则&#xff1a;嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 几种常…

Unity老动画系统Animation

1、创建老动画系统 给要制作动画的GameObeject添加Animation组件 2、Animation参数 Animation&#xff1a;默认播放的动画 Animations&#xff1a;该动画组件可以控制的所有动画 Play AutoMatically&#xff1a;是否一开始就自动播放默认动画 Animate Physics&#xff1a;动画…

【JavaSE】Java基础语法(三十二):Stream流

文章目录 1. 体验Stream流2. Stream流的常见生成方式3. Stream流中间操作方法【应用】4. Stream流终结操作方法【应用】5. Stream流的收集操作 1. 体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"…

Python文件打包成exe文件

文章目录 背景安装pyinstaller开始打包总结 背景 今天因为在线将pdf转为word被收费了&#xff0c;有点不爽&#xff0c;所以自己动手撸一个pdf转word的小工具&#xff0c;想着打包成exe给朋友使用&#xff0c;万一哪天会用到呢&#xff1f; 安装pyinstaller 打开cmd命令窗口…

【AGC】云监控日志服务查询不到Logger日志相关问题

【关键字】 AGC、云监控、日志服务 【问题描述】 开发者反馈在使用AGC云监控&#xff0c;填写了Logger日志&#xff0c;但是在云监控的日志服务查不到的问题。具体如下所述&#xff1a; 云函数按要求写了Logger日志&#xff0c;但是在云监控的日志服务页面查询不到&#xff…