当前位置: 首页 > wzjs >正文

微信网站方案阳高网站建设

微信网站方案,阳高网站建设,浦东新区网站开发,有哪些网站可以免费的提示: 单个APP内存上限默认为512M 需求实现 文章目录 前言一、参考资料二、实现方案涉及到的文件实现方案 三、 虚拟机参数 dalvik.vm.heapgrowthlimit-dalvik.vm.heapsize 介绍核心区别默认值范围(典型情况)如何查看设备的具体值ADB 命令代码…

提示: 单个APP内存上限默认为512M 需求实现

文章目录

  • 前言
  • 一、参考资料
  • 二、实现方案
    • 涉及到的文件
    • 实现方案
  • 三、 虚拟机参数 dalvik.vm.heapgrowthlimit-dalvik.vm.heapsize 介绍
    • 核心区别
    • 默认值范围(典型情况)
    • 如何查看设备的具体值
      • ADB 命令
      • 代码动态获取
    • 小结
  • 四、实际遇到的坑点
    • 遇到坑点
  • 五、扩展内容
    • ActivityManager 设置-获取 dalvik.vm.heapsize 值
    • SystemProperties 设置 dalvik.vm.heapsize 属性值
  • 总结


前言

其实就是要修改VM 虚拟机相关的参数,涉及到相关属性值修改实现,通过这个需求,最核心的还是了解 Android系统相关的性能内容
,比如GC、内存、堆栈 等


一、参考资料

Dalvik配置与JVM
老罗的Android 之旅阅读笔记(Dalvik/ART 虚拟机篇)
Android VM 02.Davilk 启动 内存 GC
Android Dalvik虚拟机内存参数优化指南
Android内存性能参数分析

所以这里只是通过一点带面,通过需求其实是需要了解最核心的性能优化 虚拟机相关的模块内容的。

二、实现方案

涉及到的文件

/frameworks/native/build/tablet-10in-xhdpi-2048-dalvik-heap.mk

实现方案

 PRODUCT_PROPERTY_OVERRIDES += \dalvik.vm.heapstartsize=16m \dalvik.vm.heapgrowthlimit=192m \
-    dalvik.vm.heapsize=512m \
+    dalvik.vm.heapsize=515m \dalvik.vm.heaptargetutilization=0.75 \dalvik.vm.heapminfree=512k \dalvik.vm.heapmaxfree=8m

修改dalvik.vm.heapsize 属性值默认为512m,自己可以修改为其它值 . ;如果需要也可以同步修改dalvik.vm.heapgrowthlimit 参数值,针对普通应用如果有需求的话可以加大一些。

三、 虚拟机参数 dalvik.vm.heapgrowthlimit-dalvik.vm.heapsize 介绍

核心区别

参数作用触发条件
dalvik.vm.heapgrowthlimit普通应用的最大堆内存限制(软限制)默认应用(未声明 android:largeHeap)
dalvik.vm.heapsize大堆应用的最大堆内存限制(硬限制)应用声明 android:largeHeap=“true”

默认值范围(典型情况)

设备 RAMheapgrowthlimit (普通应用)heapsize (大堆应用)
≤ 512MB (低端)48MB ~ 96MB128MB ~ 256MB
1GB ~ 2GB (中端)128MB ~ 192MB256MB ~ 384MB
≥ 3GB (高端)192MB ~ 256MB512MB ~ 1GB

如何查看设备的具体值

ADB 命令

# 查看普通应用堆限制
adb shell getprop dalvik.vm.heapgrowthlimit# 查看大堆应用堆限制
adb shell getprop dalvik.vm.heapsize# 查看所有 Dalvik/ART 内存参数
adb shell getprop | grep dalvik.vm

示例输出如下:

dalvik.vm.heapgrowthlimit=192mdalvik.vm.heapsize=512m

代码动态获取

// 获取普通应用堆限制(单位:MB)
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int memoryClass = am.getMemoryClass(); // 对应 heapgrowthlimit
int largeMemoryClass = am.getLargeMemoryClass(); // 对应 heapsizeLog.d("Memory", "Default heap limit: " + memoryClass + "MB");
Log.d("Memory", "Large heap limit: " + largeMemoryClass + "MB");

小结

这里简单、针对性介绍了 VM 相关的 两个两个参数 dalvik.vm.heapgrowthlimit 、 dalvik.vm.heapsize 的区别、介绍和获取方式。其它VM相关参数也很重要,这里暂不分析。 剩下的就是针对性的在系统中默认它的值就可以了。

四、实际遇到的坑点

遇到坑点

  • 配置位置大量出现,无法找到具体修改配置地方: 我们这里是解决RK 平台上,给定了指定的路径 然后直接修改过了。 实际上 系统中这两个参数配置根本不知道在哪里修改,修改了也没啥作用,使用 grep 大法 会出现大量的配置地方,对于新手来说一脸懵,对系统配置优先级不了解的更是无奈。
  • 就算找到了真正的配置文件地方,修改了 编译ROOM 烧录固件,怎么都没有效果。 这里强烈建议修改一次后,删除out 目录,整编一次(好使接近两个小时要的吧)

上面是自己实际过程中走过的坑,特别是第二点 怎么都没想到,结果导致花费大量时间。

五、扩展内容

假使在第四点中遇到坑,出不来,换个思路?

说到底 就是已修改属性 dalvik.vm.heapgrowthlimit 、 dalvik.vm.heapsize 值,既然默认无用、找不到默认值修改地方。那就直接在运行的时候写入不就可以了嘛? 我们这里以 dalvik.vm.heapsize 属性值修改为例

前面用Java 动态获取值:

```java
// 获取普通应用堆限制(单位:MB)
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int memoryClass = am.getMemoryClass(); // 对应 heapgrowthlimit
int largeMemoryClass = am.getLargeMemoryClass(); // 对应 heapsizeLog.d("Memory", "Default heap limit: " + memoryClass + "MB");
Log.d("Memory", "Large heap limit: " + largeMemoryClass + "MB");

既然有获取, 我们找到 ActivityManager 对应的服务,看看相关代码,找到对应的内容。

ActivityManager 设置-获取 dalvik.vm.heapsize 值

\frameworks\base\core\java\android\app\ActivityManager.java

在这里插入图片描述

获取实际上就是获取属性的值:

SystemProperties.get("dalvik.vm.heapsize", "16m");

SystemProperties 设置 dalvik.vm.heapsize 属性值

上面分析了AM 中获取值实际上调用的就是获取系统属性的值,那么我们在系统起来的时候设置一次这个值不就行了嘛。

    /*** Set the value for the given {@code key} to {@code val}.** @throws IllegalArgumentException for non read-only properties if the {@code val} exceeds* 91 characters* @throws RuntimeException if the property cannot be set, for example, if it was blocked by* SELinux. libc will log the underlying reason.* @hide*/@UnsupportedAppUsagepublic static void set(@NonNull String key, @Nullable String val) {if (val != null && !key.startsWith("ro.") && val.getBytes(StandardCharsets.UTF_8).length> PROP_VALUE_MAX) {throw new IllegalArgumentException("value of system property '" + key+ "' is longer than " + PROP_VALUE_MAX + " bytes: " + val);}if (TRACK_KEY_ACCESS) onKeyAccess(key);native_set(key, val);}

我们发现 set 属性值是有规范要求的,非ro. 开头属性,系统不允许这样写权限。 所以 这条路大概率走不通 或者 修改一下 这里代码也行。 大家可以自行验证。

总结

  • VM参数、性能 、GC 才是重点 这里暂未分析,这里只是修改其中两个内存相关参数值,默认。
  • 这里的修改方案只针对RK平台,即使RK不同平台不同方案修改位置可能也不一样,但是方向思路不会变的,灵活应用。
  • 遇到坑的地方,当穷尽很多方法,认为已经改了就是没有效果。 就全编一次吧,这是个人经验。
http://www.dtcms.com/wzjs/590535.html

相关文章:

  • 徐州手机网站开发公司电话nana wordpress
  • php怎么建立站点泰安最好的房产中介
  • 建筑公司网站页面图片学校网站建设联系电话
  • 网站建设 佛山移动网站 用户体验
  • 长春网络传媒做网站骗钱先做网站还是app
  • 吴中区建设局招标网站公司响应式网站
  • 开个免费的网站多少钱中国建筑劳务分包平台
  • xyz溢价域名最好的网站烟台网站建设的公司
  • 深圳住房和建设管理局官方网站深圳网站制作价格
  • 网站设计师 要求中国企业500强榜单发布
  • 个人优秀网站网站建设:上海珍岛
  • 旅游网站建设模块威胁网站检测平台建设
  • 铜仁公司做网站南联网站建设推广
  • 能够做数据地图的网站怎么做淘宝客网站赚钱吗
  • 品牌宣传网站制作如何给异地网站做镜像
  • 自己做网站难网站开发与软件开发区别
  • 企业网站必须实名认证现在网站的外部链接怎么做
  • 建设外贸类网站西宁城西区建设局网站
  • 用jsp做一网站的流程图朝阳公共资源交易中心
  • 专业网站建设是哪家便宜wordpress文章字体大小
  • 网站建设对企业的好处wordpress 模板引入文件
  • 阿里云网站 模板建设wordpress网站分享到朋友圈
  • 如何在linux服务器上架设网站专业郑州网站建设
  • 网站描文本链接怎么做网站进度条做多大
  • 宁波网站建设优化ip反查域名网站
  • 有什么网站是做企业型的上海代理注册公司
  • 东莞网站优化是什么企业网站 建设策划书
  • 广州免费建站排行视频拍摄合同
  • 亚马逊站外推广网站百度蜘蛛
  • 微信公众号模板素材网站网络推广工作