`
44289533
  • 浏览: 66990 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Android 查看内存

阅读更多

       方式一,Running services
       通过手机上Running services的Activity查看,可以通过Setting->Applications->Running services进。

       方式二,使用ActivityManager的getMemoryInfo(ActivityManager.MemoryInfo outInfo)
       ActivityManager.getMemoryInfo()主要是用于得到当前系统剩余内存的及判断是否处于低内存运行。

java代码:
private void displayBriefMemory() {
final ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ActivityManager.MemoryInfo info = new ActivityManager.MemoryInfo();
activityManager.getMemoryInfo(info);
Log.i(tag,"系统剩余内存:"+(info.availMem >> 10)+"k");
Log.i(tag,"系统是否处于低内存运行:"+info.lowMemory);
Log.i(tag,"当系统剩余内存低于"+info.threshold+"时就看成低内存运行");
}
复制代码

       ActivityManager.getMemoryInfo()是用ActivityManager.MemoryInfo返回结果,而不是Debug.MemoryInfo,他们不一样的。
      ActivityManager.MemoryInfo只有三个Field:
      availMem:表示系统剩余内存
      lowMemory:它是boolean值,表示系统是否处于低内存运行
      hreshold:它表示当系统剩余内存低于好多时就看成低内存运行

       方式三,使用Debug的getMemoryInfo(Debug.MemoryInfo memoryInfo)或ActivityManager的MemoryInfo[] getProcessMemoryInfo(int[] pids)

       该方式得到的MemoryInfo所描述的内存使用情况比较详细.数据的单位是KB.MemoryInfo的Field如下

java代码:
dalvikPrivateDirty: The private dirty pages used by dalvik。
dalvikPss :The proportional set size for dalvik.
dalvikSharedDirty :The shared dirty pages used by dalvik.
nativePrivateDirty :The private dirty pages used by the native heap.
nativePss :The proportional set size for the native heap.
nativeSharedDirty :The shared dirty pages used by the native heap.
otherPrivateDirty :The private dirty pages used by everything else.
otherPss :The proportional set size for everything else.
otherSharedDirty :The shared dirty pages used by everything else.
复制代码

        Android和Linux一样有大量内存在进程之间进程共享。某个进程准确的使用好多内存实际上是很难统计的。
因为有paging out to disk(换页),所以如果你把所有映射到进程的内存相加,它可能大于你的内存的实际物理大小。

        dalvik:是指dalvik所使用的内存。
        native:是被native堆使用的内存。应该指使用C\C++在堆上分配的内存。
        other:是指除dalvik和native使用的内存。但是具体是指什么呢?至少包括在C\C++分配的非堆内存,比如分配在栈上的内存。puzlle!
       private:是指私有的。非共享的。
       share:是指共享的内存。
       PSS:实际使用的物理内存(比例分配共享库占用的内存)
       Pss:它是把共享内存根据一定比例分摊到共享它的各个进程来计算所得到进程使用内存。网上又说是比例分配共享库占用的内存,那么至于这里的共享是否只是库的共享,还是不清楚。
       PrivateDirty:它是指非共享的,又不能换页出去(can not be paged to disk )的内存的大小。比如Linux为了提高分配内存速度而缓冲的小对象,即使你的进程结束,该内存也不会释放掉,它只是又重新回到缓冲中而已。
       SharedDirty:参照PrivateDirty我认为它应该是指共享的,又不能换页出去(can not be paged to disk )的内存的大小。比如Linux为了提高分配内存速度而缓冲的小对象,即使所有共享它的进程结束,该内存也不会释放掉,它只是又重新回到缓冲中而已。
分享到:
评论

相关推荐

    Unity调用Android查看内存信息2

    本文将深入探讨如何利用Unity调用Android原生API来查看内存信息,包括FPS(帧率)、系统总内存、系统可用内存以及Unity应用自身所占用的内存。这对于监控和优化游戏性能至关重要。 首先,我们关注的是"Unity调用...

    Unity调用Android查看内存信息1

    本文将深入探讨如何在Unity中调用Android API来查看内存使用情况、系统内存状态以及FPS(帧率)信息,这些数据对于游戏性能优化至关重要。 首先,我们需要在Unity项目中创建一个Android插件。创建一个新的Java类,...

    获取Android设备常见硬件信息

    在Android系统中,获取设备的硬件信息是开发者和普通用户都可能需要的操作。这涉及到对设备的CPU(中央处理器)、内存(RAM)、ROM(只读存储器)以及摄像头等核心硬件组件的理解。以下是对这些硬件信息的详细说明:...

    Android获取cpu,内存,磁盘使用率信息

    对于系统签名的应用,由于它们具有更高的权限,可以访问更多系统信息,如`/sys/class`和`/sys/devices`下的文件,这些通常包含有关CPU、内存和磁盘的详细硬件信息。但这样的权限通常只授予系统应用或经过特殊签名的...

    android应用内存监控工具

    一、Android内存构成 Android系统的内存主要分为以下几个部分: 1. Dalvik/ART堆:这是Android应用运行时内存,存储着Java对象。 2. Native堆:C/C++代码使用的内存区域。 3. 图像缓存:用于存储图片资源,如Bitmap...

    使用Android Studio检测内存泄露(LeakCanary)

    在应用的Application类中安装LeakCanary,这样每当应用运行时,它就会自动检测内存泄露,并在检测到问题时通过通知栏提供详细的泄漏信息。点击通知可以直接查看泄漏的对象和引用链,极大地简化了内存泄露的诊断过程...

    Android MAT 内存分析 工具

    **五、MAT与Android内存优化** MAT在Android开发中的应用主要是查找和修复内存泄漏,优化对象生命周期管理,减少内存占用,提升应用性能。开发者应定期进行内存分析,特别是在处理大量数据或长时间运行的应用中。 ...

    M8 android dump内存工具

    M8 android dump内存工具是一个专为M8设备设计的工具,它可以帮助开发者获取设备内存的状态信息,以便于诊断内存泄漏、性能瓶颈等问题。本文将详细讲解这个工具的使用方法以及相关知识点。 首先,我们来看工具的...

    Android webview 内存泄露的解决方法

    Android webview 内存泄露的解决方法 最近在activity嵌套webview显示大量图文发现APP内存一直在涨,没法释放内存,查了很多资料,大概是webview的一个BUG,引用了activity导致内存泄漏,所以就尝试传递...

    Android处理内存泄漏的代码例子

    在Android开发中,内存泄漏是一个严重的问题,它会导致应用程序占用过多内存,影响性能甚至导致应用崩溃。本示例代码着重展示了如何避免Android应用中的内存泄漏,主要包括五个关键方面:关闭游标、重用适配器、回收...

    获取android硬件信息

    综上所述,通过Android提供的API和一些辅助手段,我们可以方便地获取到设备的分辨率、型号、API级别、内存大小以及CPU型号等硬件信息。这些信息对于开发适配性良好、性能优异的应用至关重要。在实际项目中,应根据...

    android硬件信息获取样例

    在Android系统中,获取硬件信息是开发者经常需要进行的操作,特别是在开发与硬件性能密切相关的应用时。本示例主要关注如何获取CPU信息、内存信息以及手机型号等关键硬件数据。以下将详细介绍这些知识点。 首先,...

    android 轻松避免内存溢出

    1. **Android内存机制**: - Android系统为每个应用程序分配了一定量的内存,不同版本的Android系统分配的内存大小不同。 - 当应用占用的内存超过分配的阈值时,就会触发垃圾回收(Garbage Collection, GC),回收...

    获取硬件内存和CPU

    综上所述,通过Android的系统服务和文件系统接口,我们可以获取到设备的内存大小和CPU核心数等关键硬件信息,这对于设备性能分析、应用优化以及故障排查等方面具有重要的实践意义。在开发过程中,这些信息可以帮助...

    android手机内存分配小结

    首先,我们需要了解Android内存的基本划分。Android手机的内存并非全部供应用程序直接使用,而是被划分为多个部分,包括: 1. **Modem/Bootloader/SMEM**:这部分内存主要用于运行AMSS(应用多媒体子系统)、...

    androidStudio内存泄漏分析

    在Android应用开发中,内存泄漏是一个严重的问题,它可能导致应用性能下降、响应变慢甚至崩溃。Android Studio作为官方推荐的集成开发环境(IDE),提供了强大的内存泄漏检测工具,帮助开发者定位并解决这些问题。...

    查看Android USB设备信息

    本文将深入探讨如何查看连接到Android设备的USB设备信息,并讲解相关技术要点。 首先,Android USB设备信息主要包括设备的VID(Vendor ID,供应商ID)和PID(Product ID,产品ID),这两个ID是由USB组织分配给每个...

    Android 获取手机总内存和可用内存信息,博客附adb方式

    在Android系统中,获取手机的总内存和可用内存信息是开发者和普通用户都可能需要的操作。这涉及到系统层面的信息查询,通常需要通过编程接口(API)或者使用Android Debug Bridge(ADB)工具来实现。以下是对这个...

    Android代码-安卓内存清理 改进版

    >现修复android5.0以上不能查看进程的问题,暂时不能支持7.0的查看进程的功能,欢迎各位提出相应的意见或建议,如不能配置好环境,请下载安装包MemoryCleaner >由于对第一版的安卓手机内存用到的技术以及UI不满意,...

    Android 内存溢出问题

    本篇文章将深入探讨Android内存管理的两个核心概念:堆(Heap)和栈(Stack),以及如何理解和解决Android内存溢出问题。 1. 堆与栈 堆和栈是Java虚拟机(JVM)中的两种主要内存区域,它们各自具有特定的用途和...

Global site tag (gtag.js) - Google Analytics