首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android内存性能测试

前言 Android应用大部分性能问题归根结底都会成为内存的问题,今天我们就先以Out of Memory(OOM)为起点介绍一下Android内存的原理以及排查内存问题的方法。...原理 在讲OOM之前我们先来弄清楚几个概念:内存泄漏、内存抖动、内存溢出 内存泄漏:内存泄漏是指没有用的对象资源仍与GC-Root保持可达路径,导致系统无法进行回收; 内存抖动:内存抖动是因为大量的对象被创建又在短时间内马上被释放...现在我们来归纳一下,内存问题主要包括常驻问题(主要是图片缓存)、泄漏问题(主要是Activity泄漏)、GC问题(关键是GC For Alloc),后果会导致App Crash、闪退、后台被杀、卡顿,而且这是各种资源类性能问题积压的最后一环...,因为在日常测试和开发过程中,即便客户端接了内存泄漏检测的工具,但也只是作为一个debug工具,很难系统的看出某个版本的应用内存泄漏情况是如何的。...首先新建一个LeakUploadService类,用来格式化内存泄漏详情以及上传到日志服务器便于快速定位,具体代码如下: public class LeakUploadService extends DisplayLeakService

1.5K10

Android 性能测试内存性能内存泄漏篇

性能测试-内存性能内存泄漏篇 数据源 APP占用内存测试,要比CPU的更为简单。App memory数据来源是dumpsysmeminfo。...如下图中,只收集了TOTAL的数据,如果要具体分析native和dalvik的内存信息,也可以将其数据单独过滤出来保存。...图二 内存信息收集逻辑 数据使用 评估一个使用场景是否存在内存泄漏,如从APP首页进入一个二级页面,我们只需要将这个操作封装成UI自动化,重复执行N遍,即可获得如下数据曲线。...只要数据曲线不是如下图中的灰色平缓曲线,则可以证明该场景是有内存泄漏的。 图三 内存泄漏示意图 同样,如果只提供上述的曲线给开发,定位问题也会比较麻烦,测试内存泄漏的测试中,也可以多做一些。...笔者目前水平止步于此,后续将继续深入学习内存泄漏测试的相关内容。 文章来源于:腾讯移动品质中心 TMQ

2.5K00
您找到你想要的搜索结果了吗?
是的
没有找到

【 Android 场景化性能测试内存性能内存泄漏篇

作者:陈帅团队:腾讯移动品质中心TMQ 一、数据源 APP占用内存测试,要比CPU的更为简单。App memory数据来源是dumpsys meminfo。...如下图中,只收集了TOTAL的数据,如果要具体分析native和dalvik的内存信息,也可以将其数据单独过滤出来保存。...只要数据曲线不是如下图中的灰色平缓曲线,则可以证明该场景是有内存泄漏的。...[1509070479432_1215_1509070714109.png] 图三内存泄漏示意图 同样,如果只提供上述的曲线给开发,定位问题也会比较麻烦,测试内存泄漏的测试中,也可以多做一些。...篇幅有限,还有很多深入的内容无法一一铺陈,后续将继续深入学习内存泄漏测试的相关内容。 搜索微信公众号:腾讯移动品质中心TMQ,获取更多测试干货!

1.7K10

Web 性能测试-内存泄漏测试方法之chrome内存快照

首先明确一下我们测试的目的:客户端浏览器的js内存是否存在泄漏,服务器端的话可不是这么测,防止用户使用时浏览器卡顿或崩溃。 F12打开开发者工具,选中Memory页签下的Heap snapshot。...测内存泄漏就是看我们做了一些操作前后内存的变化,比如我们在重复做查询操作,每次操作后的快照都会增加几兆或更多,这就说明可能是存在内存泄漏。...注: 你做不同的事,内存增长不一定是内存泄漏哦,他可能是正常的加载一些必要的东西占用的内存而已。总之就是做这一种事只需要固定的那么多内存,要是每次都新增加了一些内存,说明加载的东西重复了。...可能是之前不用的内存没释放,或是新加载了一些没用的内存。...快速测试内存泄漏 每次我们都要做快照的话如果内存大的话快照是比较慢的,快照主要是开发来对比找问题用的,我们测试只需要发现问题就好了。

5.5K20

内存分配器性能测试

但是既然go语言已经支持垃圾回收,还有必要自己去写一个内存分配器吗?我们做一个简单的测试看看结果怎么样。...测试平台: OS: ubuntu 12.04 x86_64 CPU: i5 2.27G MEMORY: 8G // ben1.go 自己实现内存分配器 package main type Pool struct...package main func main() { for i := 0; i < 10000000; i++ { _ = make([]byte, 100) } } 编译测试: go build.../ben2 测试结果: 次数 ben1(s) ben2(s) 1 0.308 2.057 2 0.304 2.048 3 0.308 2.093 平均 0.307 2.066 结论: 可以看到,自己实现的内存分配器的执行时间大约是系统内存分配器的十分之一...因此对于一些特定应用场景,比如网络库等,使用自定义内存分配器还是很有必要的。由于go语言提供了垃圾收集功能,所以实现自定义内存分配器相比较在C/C++里简单很多。

1.2K60

Java直接内存与非直接内存性能测试

对于直接内存来说,JVM将会在IO操作上具有更高的性能,因为它直接作用于本地系统的IO操作。而非直接内存,也就是堆内存中的数据,如果要作IO操作,会先复制到直接内存,再利用本地IO处理。...文档中也说了,直接内存使用allocateDirect创建,但是它比申请普通的堆内存需要耗费更高的性能。不过,这部分的数据是在JVM之外的,因此它不会占用应用的内存。...所以呢,当你有很大的数据要缓存,并且它的生命周期又很长,那么就比较适合使用直接内存。只是一般来说,如果不是能带来很明显的性能提升,还是推荐直接使用堆内存。...可以总结下,直接内存的使用场景: 1 有很大的数据需要存储,它的生命周期又很长 2 适合频繁的IO操作,比如网络并发场景 申请分配地址速度比较 下面用一段简单的代码,测试下申请内存空间的速度: int...在数据量提升时,直接内存相比于非直接内存的申请 有十分十分十分明显的性能问题!

1.4K50

memtier_benchmark内存性能测试利器

// memtier_benchmark内存性能测试工具 // 最近在测试英特尔的傲腾可持久化内存,使用到了memtier_benchmark这个工具,在使用这个工具的时候,遇到了一些问题,我简单总结了一下...memtier_benchmark是类似redis-benchmark的内存测试工具,但是它又不仅限redis的测试,还可以覆盖memcache,它提供了丰富的选项和报表功能,能够产生各种各样的流量模拟...-s --server:代表服务器地址,默认localhost -p --port:代表端口,默认为redis的6379端口 -x --run-number:代表完整测试的重复次数 --client-stats...,这里时间最好不要太短,否则有可能捕捉不到bad case --ratio=Ratio:set和get请求的比例,默认是1:10 --data-size:对象数据大小,默认是32 -R、--random-data...:使用随机化的测试数据 --data-size-range:数据对象大小范围,可以写成32-512,代表32字节到512字节 --data-size-list:这个参数比较关键,它可以帮助你去对key值的大小进行配比

4.1K20

APP性能测试内存使用率

Dex文件有索引区和Data区 Other mmap 其它文件占用的内存 自动化获取性能数据 前面我们使用adb命令获取CPU,内存性能数据,但是如果想批量获取性能数据,使用命令一个个查询会非常的不方便...''' result = os.popen(" adb shell procrank | findstr " + str(self.pkg)) # 获取内存性能指标数据...self.counter - 1 time.sleep(3) def SaveDataToCSV(self,data_type): ''' 存储性能测试数据...内存泄漏会因为减少可用内存的数量从而降低设备的性能。 Android 内存泄漏测试可以在APP中集成LeakCanary进行测试。...内存测试 Instruments内存分析 打开Instruments 然后选择 Leaks进入主界面,选择测试设备和测试应用点击开始执行,底部菜单选择CallTree(如下图),并在底部勾选hide System

3.9K31

性能测试篇 :Jmeter监控服务器性能

本文介绍使用jmeter监控服务器性能 (记得收藏,转发哦) jmeter也可以像loadrunner一样监控服务器CPU、内存性能参数,不过需要安装一些插件 1、下载需要的jmeter插件 ?...: 显示测试的响应时间分布,X轴显示由时间间隔分组的响应时间,Y轴包含每个区间的样本数 jp@gc-TransactionsperSecond: 每秒事务数,服务器每秒处理的事务数 4、将监控服务器的serverAgent...5、准备测试脚本 这里用到一个登陆测试系统的简单脚本做压力测试demo ?...关于压力测试实例请参考文章《JMeter压力测试实例操作》 6、配置监控服务器性能参数的组件 主要用到这个组件: jp@gc-PerfMonMetricsCollector,配置如下: ?...8、图表可导出成csv文件,配合聚合报告,分析服务器性能状况 ? ?

4.3K21

服务器基准性能测试

服务器基准测试测试说明:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试;云服务器基准测试主要是相同软件版本下不同硬件的性能对比测试。...测试工具: 图片网络性能测试带宽性能(TCP)性能指标:测试网络吞吐速率测试工具:netperfcentos# 下载netperfwget -O netperf-2.7.0.tar.gz -c https...S1上安装上安装iperf作为服务器server端,用于接收;2. C1、C2上安装iperf作为客户client端,用于发送数据;3....:QPS:每秒查询数TPS:每秒事务数rtt:每秒响应时间95分位业务测试Mysql测试性能指标:测试数据库TPS、QPS、平均响应时间和95分位时间,同时关注其测试过程中的cpu和磁盘使用情况测试工具...:QPS:每秒查询数TPS:每秒事务数rtt:每秒响应时间95分位Redis测试性能指标:测试redis在set和get请求下的OPS、平均响应时间和每秒写入数据大小,同时关注其测试过程中的cpu、内存和带宽使用情况测试工具

5K40

腾讯TMQ在线沙龙|android内存性能测试

Android内存性能测试 活动时间:2016年10月31日 QQ群视频交流 活动介绍:TMQ在线沙龙第十一期分享 本次分享的主题是老司机给大家分享android内存性能测试。...2、提问:如果测试内容是某个SDK,该如何着手设计? 答:1).通常是单独写一个测试应用,以排除其他可能的干扰项。调用sdk模拟实现一些功能并进行测试,得到性能数据。...6、提问:请问我们想将内存性能测试应用于monkey自动化测试中,执行monkey压测时候,能收集到手机内存变化数据,让我们在monkey运行完成之后画出相应的内存变化曲线。...15、提问:android 内存性能分析,一般在项目的什么阶段开展比较合适 答: 性能测试分析的时间成本可能较高,一般是在集成阶段。如果能够自动化采集性能数据,可以提前一些。...答: 内存测试一般不存在这个问题,所有取内存数据的行为都是针对指定进程的,不会取到其他应用进程的数据

1.6K60

Linux服务器性能压力测试

对于新采购的服务器,需要进行有必要的性能测试。这里选择UnixBench工具进行性能测试。...记录如下: 1)安装使用 下面的脚本使用了最新版UnixBench5.1.3来测试,注释了关于graphic的测试项(大多数VPS都是没有显卡或者是集显,所以图像性能无需测试),运行10-30分钟后(根据...======= "; echo ''; echo ''; echo ''; 二、测试结果 执行后返回的测试结果类似如下(该性能测试脚本大概会运行10-30分钟,需耐心等待测结果): [root@test-vm001...8. *********** File copy 测试从一个文件向另外一个文件传输数据的速率。每次测试使用不同大小的缓冲区。...(1 concurrent) 1 2 3 Shell Scripts (8 concurrent) 1 2 3 Shell Scripts (16 concurrent) 1 2 3 可以对多台服务器性能进行如上测试

8.6K70

性能测试 -- 服务器参数调整

cat /etc/issue cat /etc/redhat-release 4)查看网卡配置 cat /proc/net/bonding/bond0 mii-tool -v 5)优化Sysctl,提升服务器性能...,允许送到队列的数据包的最大数目 net.core.netdev_max_backlog = 2048  #每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 net.ipv4...net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65535 vm.swappiness = 10 #硬盘swap交换分区数设置,提高内存使用...net.core.somaxconn = 1024 #用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制 net.ipv4.ip_local_reserved_ports...2090,3060,3080,8060,8080,8081,8082,9000,9080,9090,10029,22223-22323 vm.dirty_background_bytes = 104857600 #控制内存占用的阈值

1.6K70

.Net Core内存回收模式及性能测试对比

这种模式的特点是初始分配的内存较大,并且尽可能不回收内存,进行回收用时会很耗时,并进行内存碎片整理工作。用一句简单的话说,这个就是贪婪模式,通过尽可能多的获得内存和少回收来得到更好的性能。...结果就是高内存使用率性能较好。 Workstation GC : 主要应用于单处理器系统,Workstation GC尽可能地通过减少垃圾回收过程中程序的暂停次数来提高性能。...结果就是低内存使用率性能较差。...,情况如下图所示: image.png 经过反复多次的测试内存最高时涨到800多M,这与可用内存有关系,如果可用内存更多,还会涨到1G或更高然后再掉下来: image.png Workstation...Net Core默认的贪婪模式可以得到更好的性能,这没有什么问题是,毕竟内存不用放在那也是浪费。当然如果你的服务器上许多的程序在跑,并对内存有较高的限制要求不要影响到其它的程序,那就要做一些配置了。

1.5K110

游戏服务器性能测试策略

大量用户登录游戏产生的“并发量”往往会对游戏服务器产生巨大的压力,看前两年的12306就可以秒懂。游戏上线之前对服务器的承载能力做测试是必须要做的事。...本文从腾讯游戏服务器性能测试的经历出发,对服务器性能测试的原理、指标和方法进行了介绍,并提供了优化方案指导! 服务器压测流程: 1. 架构分析(单点/全局瓶颈) 2....优化回归 服务器常用压测方法: • 接口性能测试:业务接口的QPS性能,掌握子组件/系统性能概况 • 场景测试:注册登录,聊天,视野广播,物理碰撞,PVP,多人同屏战斗等 • 容量测试:评估系统承载人数...,为现网机器部署提供数据参考 • 稳定性测试:用于验证服务器在综合场景下的长期运行状况 优化方法: 1....对不同场景中的性能瓶颈针对性的优化提升子系统/模块的性能 2. 系统优化,设计系统级的动态调度策略,保证系统的整体服务能力和系统安全性 3.

1.5K80

用JMeter测试emqx服务器性能

用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。   JMeter是一个图形化软件,用户设置好test plan之后执行,就可以测试服务器了。   ...添加MQTT connect 测试 ?   3. 相关设置   number of threads 线程数:我设置了50000。因为看到有博客说“1G内存对应6W设备连接”。   ...然儿我最后线程数只达到了1W多(阿里云轻量服务器,1核CPU,2GB内存) ? ?   1. Server name or IP: 指向被测MQTT服务器地址。...如下图所示,可以看到连接的峰值为11581,内存为340M。...这个内存好像是emq的节点根据当前的线程数分配的,线程增多,分配的内存(图中的total)就会相应地增加(不过,免费版emqx的内存是有上限的)   但是我不太懂那个(used/available),为啥是

2.5K30

转--Golang语言 内存分配器性能测试

但是既然go语言已经支持垃圾回收,还有必要自己去写一个内存分配器吗?我们做一个简单的测试看看结果怎么样。...测试平台: OS: ubuntu 12.04 x86_64 CPU: i5 2.27G MEMORY: 8G // ben1.go 自己实现内存分配器 package main type Pool struct...package main func main() { for i := 0; i < 10000000; i++ { _ = make([]byte, 100) } } 编译测试: go build.../ben2 测试结果: 次数 ben1(s) ben2(s) 1 0.308 2.057 2 0.304 2.048 3 0.308 2.093 平均 0.307 2.066 结论: 可以看到,自己实现的内存分配器的执行时间大约是系统内存分配器的十分之一...因此对于一些特定应用场景,比如网络库等,使用自定义内存分配器还是很有必要的。由于go语言提供了垃圾收集功能,所以实现自定义内存分配器相比较在C/C++里简单很多。

1K40
领券