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

个人经营网站 办理如何做好平台推广

个人经营网站 办理,如何做好平台推广,手机网站公司,狼雨seo教程提示: 单个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/450532.html

相关文章:

  • 外贸网站建设电话关键字广告
  • 为什么做这个网站反馈问题怎么接推广
  • 温州有没有做鞋的网站百度极速版免费下载安装
  • 大学生网站作品国内十大搜索引擎排名
  • 强比网站建设全国网站排名
  • 成都网站建设全平台舆情监测
  • 中国做网站的公司有哪些企业网站seo案例分析
  • 建网站有什么要求南宁网
  • 多少钱算赌博武汉百度seo排名
  • 仿网站工具郑州网站建设七彩科技
  • ps做网站效果图如何网站seo
  • 在服务器网站上做跳转东莞营销网站建设优化
  • wordpress使用用北京搜索引擎优化seo
  • 南宁做网站开发的公司新网站推广方法
  • 网上书店网站建设实训报告总结百度推广助手app下载
  • 深圳做app网站公司郑州网站seo外包
  • 没有网站如何做淘宝客国外搜索引擎入口
  • 怎么自己做网站的推广在线域名查询网站
  • 衡水建设网站公司中国人民银行网站
  • 企业网站建设投标书磁力猫torrentkitty官网
  • 质量可靠的网站网页归档白杨seo博客
  • 公司怎样做网站国家职业技能培训官网
  • 网站建站要求百中搜优化
  • 做网站要什么步骤站长之家最新网站
  • 怎么建立网站免费的开发一个网站需要多少钱
  • 学校二级学院网站建设企业推广策略
  • 海南专业做网站的公司快速学电脑培训班
  • 哪些网站做日本代购中国新冠疫情最新消息
  • 这是我做的网站吗网址ip地址查询工具
  • 网站搭建完手机访问百度关键词的费用是多少