当前位置: 首页 > 网络应用技术

Android内存,I / O,网络,存储性能优化解决方案想法

时间:2023-03-08 15:00:13 网络应用技术

  上图是公共Java虚拟机的内存分布图:

  Android基于Linux系统,并且Android中的过程分为两种类型。

  1.2.1本机过程使用C/C ++实现,Linux进程不包括DALVIK实例。/system/bin/Directory下面的程序文件以本机过程的形式存在。

  1.2.2 Java进程实例化了Dalvik虚拟机实例的Linux进程。该过程的导入主要函数是Java函数。DALVIK虚拟机实例的主机进程是fork()调用创建的Linux进程,因此每个Android上的Java进程实际上是Linux过程,但是还有一个附加该过程中的dalvik虚拟机实例。

  手机操作系统仅限于每个应用程序进程的内存。您可以通过以下命令查看限制:

  您可以在AndroidManifest文件中的应用程序节点中添加Android:gromheap =“ true”,以增加其Dalvik虚拟机的大小。

  常见的内存泄漏:

  1.3.1泄漏通常简单的内存泄漏可以直接在参考链接中找到

  1.3.2 Matmat是存储分析仪的缩写。这是一个功能强大的Java桩内存分析仪。它可用于查找内存泄漏和查看内存消耗。mat基于Eclipse,是一个免费的性能分析工具。使用:

  1.3.3 Android Profiler主要关心以下领域:

  DataStore是JetPack最近推出的新启动组件。以下类型的数据可以通过两种类型的数据处理:

  数据存储类型描述偏好数据存储(例如共享流程)以钥匙值对的形式存储基本的数据类型。根据流量,Datastore获得了异步存储的datastore。避免基于主线程带来的ANR问题的ANR问题的任何自定义类型的自定义类型类型的数据存储,它需要定义Protobuf的IDL,但它可以确保对数据存储的安全访问的类型更为比共享流程有利。

  为了获得异步访问以确保基于Coroutine流的数据访问一致性异常处理机制,请避免同时阻止Protobuf,并通过非基本数据存储实现Google官方比较形式:

  为了获得更有效的字节流操作,您可以使用Netty的Bytebuf替换JDK中的字节式ByteBuffer。ByteBuffer是Java Nio中提供的字节容器。这是处理阅读和写作操作的指针。每个阅读和写作都需要调用Flip()或Clear()方法,否则将报告异常。

  优化之前,请描述普通网络请求的过程:

  了解网络请求的过程后,优化上述三个步骤:

  使用Android应用访问网络时,第一步是DNS分析。默认值使用运营商的LocalDNS服务。DNS的完整分辨率过程很长。它没有带到主域名服务器,并且每层都有一个缓存,但是对于域名分析的真实时间性质,每个层的缓存都有一个到期的时间。

  目前,主要的云服务提供商Alibaba Cloud和Tencent Cloud都提供了自己的HTTPDNS服务。对于我们的普通开发人员,我们只需要支付少量费用即可。它可以用于嵌入支持HTTPDNS上的client SDK。当使用OKHTTP的DNS服务默认情况下,您可以通过OKHTTP中的.DNS()接口配置HTTPDNS。

  优化方法:

  根据SQLite提供了一个抽象层,使用户可以在充分利用SQLite的强大功能的同时享受更强的数据库访问机制。房间包含3个重要部分: