通过 profiling 定位 golang 性能问题 - 内存篇 原创 张威虎 滴滴技术 2019-08-02…
奇艺iOS移动端网络优化实践 | 请求成功率优化篇 原创 Charles 爱奇艺技术…
一.android官方一些内存方面的内存tips 1.避免创建不必要的对象. 如尽量避免字符串的加号拼接,可以使用StringBuilder来拼接. 如果需要TextView设置多个字符串片段,可以使用textView.append方法,不要直接用加号拼起来. 2.尽量使用for-each循环,对于ArrayList,请使用普通的for,如: int len = list.size(); for (int i = 0; i < len; ++i) { //todo somgthing } 3.使…
[转]一文掌握 Linux 性能分析之内存篇 前面我们已经学习了 CPU 篇,这篇来看下内存篇. 01 内存信息 同样在分析内存之前,我们得知到怎么查看系统内存信息,有以下几种方法. 1.1 /proc/meminfo 这个文件记录着比较详细的内存配置信息,使用 cat /proc/meminfo 查看. 我们比较关心的是下面几个字段: MemTotal:系统总内存,由于 BIOS.内核等会占用一些内存,所以这里和配置声称的内存会有一些出入,比如我这里配置有 2G,但其实只有 1.95G 可用.…
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面我们已经学习了 CPU 篇,这篇来看下内存篇. 01 内存信息 同样在分析内存之前,我们得知到怎么查看系统内存信息,有以下几种方法. 1.1 /proc/meminfo 这个文件记录着比较详细的内存配置信息,使用 cat /proc/meminfo 查看. 我们比较关心的是下面几个字段: MemTotal:系…
最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Windows系统CPU内存网络性能统计第一篇 内存> 2.<Windows系统CPU内存网络性能统计第二篇 CPU> 3.<Windows系统CPU内存网络性能统计第三篇网络流量> 本篇将介绍统计系统内存使用情况,包括内存使用率.总物理内存大小.可用物理内存大小.总虚拟内存大小,可用虚…
golang 性能调优分析工具 pprof(上)篇, 这是下篇. 四.net/http/pprof 4.1 代码例子 1 go version go1.13.9 把上面的程序例子稍微改动下,命名为 demohttp.go: package main import ( "bytes" "fmt" "io/ioutil" "log" "math/rand" "net/http" _ &quo…
性能测试培训:帮你定位 Linux 性能问题的 18 个命令以及工具 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loadrunner的培训中,为了提高学员性能优化的经验,加入了很多服务器方面的优化知识,为性能调优的能力打下基础.今天学习下linux性能分析的命令和工具性能优化的方法.(大家对课程感兴趣,请加qq:564202718) 1.TopTop命令是一个性能监控程序,它按一定的顺序显示所有正在运行…
小结: 1. 性能查看工具 pprof,trace 及压测工具 wrk 或其他压测工具的使用要比较了解. 代码逻辑层面的走读非常重要,要尽量避免无效逻辑. 对于 golang 自身库存在缺陷的,可以寻找第三方库或自己改造. golang 版本尽量更新,这次的测试是在 golang1.12 下进行的.而 go1.13 甚至 go1.14 在很多地方进行了改进.比如 fmt.Sprintf,sync.Pool 等.替换成新版本应该能进一步提升性能. 本地 benchmark 结果不等于线上运行结果.…
一.golang 程序性能调优 在 golang 程序中,有哪些内容需要调试优化? 一般常规内容: cpu:程序对cpu的使用情况 - 使用时长,占比等 内存:程序对cpu的使用情况 - 使用时长,占比,内存泄露等.如果在往里分,程序堆.栈使用情况 I/O:IO的使用情况 - 哪个程序IO占用时间比较长 golang 程序中: goroutine:go的协程使用情况,调用链的情况 goroutine leak:goroutine泄露检查 go dead lock:死锁的检测分析 data rac…
前面 2 篇 golang 性能优化分析系列文章: golang 性能优化分析工具 pprof (上) golang 性能优化分析工具 pprof (下) 一.基准测试 benchmark 简介 在 golang 中,可以通过 benchmark 基准测试来测试代码性能.基准测试主要是通过测试 cpu 和内存的效率问题,来评估被测试代码的性能. 基准测试的指标: 程序所花费的时间 内存使用的情况 cpu 使用情况 基准测试文件名和函数规定: go 基准测试文件都是以 _test.go 结尾,和单…
常见工作中,计算机系统的资源主要包括CPU,内存,硬盘以及网络,过度使用这些资源将使系统陷入困境.本系列一共四篇博文,结合我在实习期间的学习,介绍一些常见的Linux系统排障工具及方法. 第1篇——内存篇 第2篇——CPU篇 第3篇——磁盘I/O篇 第4篇——网络篇 事实上,当上述服务器系统资源中的任何一个遭遇瓶颈,都会带来服务器性能的下降,典型的症状就是系统运行迟缓. 本文从以下几个角度介绍Linux系统内存相关的排查. 1. 内存的使用率如何查看,使用率真的很高吗 2. 内存用在哪里了 3.…
一.啥是内存呢? 回答:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁.计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大. 内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据.只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行. 内存是由内存芯片.电路板.金手指等部分组成的. 想全面了解内存的请到威武的百科去看内存…
开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概归纳了一下几点: 1.方便我们理解什么样的对象,什么时候,会被系统回收掉 2.有助于我们后面的内存优化 3.了解这一块的知识也能提升自己的知识广度,和同事一起装逼的时候有话题 4.如果有面试的需求的话,了解这一块,也能从容面对考官,对于内存回收能够说出个一二 好了,废话不多说了,我大概按以下这个逻辑…
前言 正在学习Doctor 张.鑫大佬的移动游戏加载性能和内存管理,内容非常非常的干,所以我烧了很多开水,边喝边看,一边拿小本几做好笔记 本文只是关于前2章的内容笔记,关于各种资源的加载耗时 纹理资源加载耗时 重复加载十次,取平均值 纹理尺寸测试结论 1.纹理资源的分辨率对加载性能影响较大,分辨率越高,其加载越为耗时.设备性能越差,其耗时差别越为明显: 2.设备越好,加载效率确实越高.但是,对于硬件支持纹理(ETC1/PVRTC)来说,中高端设备的加载效率差别已经很小,比如图中的红米Note2和…
https://mp.weixin.qq.com/s/a6mLMDinYQGUSaOsGYCEaA 独家|Linux进程内存用量分析之堆内存篇 姬晨烜 58技术 2019-12-06 导语 本文将介绍几种内存泄漏检测工具,并通过实际例子介绍一种分析堆内存占用量的工具和方法,帮助定位内存膨胀问题. 背景 进程的内存管理是每一个开发者必须要考虑的问题,对于C++程序进程来说,出现问题很多情况下都与内存挂钩.进程崩溃问题通常可以使用gdb等调试工具轻松排查并解决.而对于进程内存膨胀这类问题,原因通常有…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 文/ jaunty [博主导读]在Android开发中,不免会遇到许多OOM现象,一方面可能是由于开发者能力有限,对控件使用不熟悉,另一方面架构师前期未未做及时培训,规避一些恶性代码.及时手动回收内存.不管怎样,项目完成还是要发布的,周期有限,后期优化工程师为解决此问题,则需要对项目整体进行把握,从微调开始,对项目进行手术.那么切入正题: 如何测试一个APP的内存占用情况?一个APP占用的内存分哪…
https://www.jianshu.com/p/9bc7e65fc247 2017.07.27 17:24* 字数 628 阅读 1319评论 6喜欢 21 简介: 虽然苹果出了ARC(自动内存管理机制),我们不用花太多的时间在内存泄漏的问题上,但在我们开发的过程中,还是会因为各种原因而产生内存泄漏,例如Block的循环引用,delegate 写成了 strong,定时器没有关闭,弱指针使用不当等等.所以我们下面就简单介绍下怎么使用Xcode8自带的Instruments中的Leaks检测我…
python 内存泄露的诊断 - 独立思考 - ITeye技术网站 python 内存泄露的诊断 博客分类: 编程语言: Python Python多线程Blog.net  对于一个用 python 实现的,长期运行的后台服务进程来说,如果内存持续增长,那么很可能是有了"内存泄露". 最近在我的项目中,就出现了内存持续增长的情况,goolge 了一下,发现 Tracing Python memory leaks 讲了一种诊断方式,并给出了实例.而我的案例与此文稍有不同,下面就结合我的案…
http://stblog.baidu-tech.com/?p=1684) coredump调试记录 - PHP篇 原创: 扶墙 贝壳产品技术 今天…
内存性能指标 系统内存指标 已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存. 共享内存是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小.tmpfs 其实也是一种特殊的缓存. 可用内存是新进程可以使用的最大内存,它包括剩余内存和可回收缓存. 缓存包括两部分,一部分是磁盘读取文件的页缓存,用来缓存从磁盘读取的数据,可以加快以后再次访问的速度.另一部分,则是 Slab 分配器中的可回收内存. 缓冲区是对原始磁盘块的临时存储,用来缓存将要写入磁盘的数据.这样,内核就…
  用户空间内存包括多个不同的内存段,比如只读段.数据段.堆.栈以及文件映射段等.但会发生内存泄漏的内存段,只有堆和文件映射段中的共享内存.   内存泄漏的危害非常大,这些忘记释放的内存,不仅应用程序自己不能访问,系统也不能把它们再次分配给其他应用.内存泄漏不断累积,甚至会耗尽系统内存.最终,系统通过 OOM (Out of Memory)机制杀死进程,但进程在 OOM 前,可能已经引发了一连串导致严重性能问题的现象. (1) vmstat.memleak 工具 # install syssta…
背景起因: 记起以前的另一次也是关于内存的调优分享下   有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如下代码耗时统计进行压测:   long startTime = System.currentTimeMillis();  callRpc();   //这里比如调用RPC伪代码,当然还在插入数据库,中间件地方都加入统计  long costTime = (System.currentTimeMill…
下面是内存篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Memory, GC, and Performance 众所周知,与C/C++需要通过手动编码来申请以及释放内存有所不同,Java拥有GC的机制.Android系统里面有一个Generational Heap Memory的 模型,系统会根据内存中不同的内存数据类型分别执行不同的GC操作.例如,最近刚分配的对象会放在Young Generation区域,这个区域的对象通常都是会快速被创建并且很快被销毁回收的…
在操作系统里,虚拟内存被分成页,在 x86 系统上每个页大小是 4KB.Linux 内核读写虚拟内存是以 “页” 为单位操作的,把内存转移到硬盘交换空间(SWAP)和从交换空间读取到内存的时候都是按页来读写的.虚拟内存管理是 Linux 内核里面最复杂的部分. 这里的讲到的 “内存” 包括物理内存和虚拟内存,虚拟内存(Virtual Memory)把计算机的内存空间扩展到硬盘,物理内存(RAM)和硬盘的一部分空间(SWAP)组合在一起作为虚拟内存为计算机提供了一个连贯的虚拟内存空间,好处是我们拥…
缓存命中率   缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比,可以衡量缓存使用的好坏.命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好.   实际上,缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提前读入到内存中.这样,下次访问时就可以直接从内存读取数据,而不需要经过硬盘,从而加快应用程序的响应速度.   cachestat 提供了整个操作系统缓存的读写命中情况.   cachetop 提供了每个进程的缓存命中…
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/54377370 本文出自:[余志强的博客] 本博客同时也发布在 Hoolay Team 一.android官方一些内存方面的内存tips 1.避免创建不必要的对象. 如尽量避免字符串的加号拼接,可以使用StringBuilder来拼接. 如果需要TextView设置多个字符串片段,可以使用textView.append方法,不要直接用加号拼起来. 2.尽量使用for-…
开篇废话 今天我们一起来学习JVM的内存分配,主要目的是为我们Android内存优化打下基础. 一直在想以什么样的方式来呈现这个知识点才能让我们易于理解,最终决定使用方法为:图解+源代码分析. 欢迎访问我的个人博客:senduo's blog 希望能在我们平时开发写代码的时候,能够知道当前写的这段代码,内存方面是如何分配的. 我们深知,一个Java程序员在很多时候根本不用操心内存的释放,而是依靠JVM去管理,以前写C++代码的时候,却要时刻记着new的空间要及时释放掉,不然程序很容易出现内存溢出…
1. 用ARC管理内存 ARC(Automatic ReferenceCounting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露.它自动为你管理retain和release的过程,所以你就不必去手动干预了.忘掉代码段结尾的release简直像记得吃饭一样简单.而ARC会自动在底层为你做这些工作.除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存. 2. 在正确的地方使用 reuseIdentifier 一…
内存资源紧张时,可能导致的结果 (1)OOM 杀死大内存CPU利用率又低的进程(系统内存耗尽的情况下才生效:OOM 触发的时机是基于虚拟内存,即进程在申请内存时,如果申请的虚拟内存加上服务器实际已用的内存之和,比总的物理内存还大,就会触发 OOM): (2)回收内存 1 )回收文件页(File-backed Page).有两种:   第一种,回收Buffer和Cache.大部分文件页直接回收,以后有需要时,再从磁盘重新读取,脏页先写入磁盘后释放内存.脏页可以通过两种方式写入磁盘:在应用程序中可以…