如何解决Android studio内显存不够用 调用内存的问题

作为Android开发者,最头疼是什么?相信大家会异口同声的说Bug!的确,这些是避免不了的同时也是最烦人,调Bug,改Bug,一个项目做完,剩下的几乎全是Bug的调试,有的公司很可能在项目上线前还有改不完的Bug,针对这些困扰Android开发者的种种难题,整理出了这些难题或是Bug的解决方案,希望能给大家带来帮助。
Android其它相关难题
Nielsen最近的研究数据表明,Android系统的设备已经在数量上超过iOS系统了…Android 如何实现垃圾清理、缓存清理?要删除什么哪些文件或者要怎么做?这…作为Android开发程序员,我们经常会遇到项目中R文件的丢失问题,大部分情况…默认EditText在获得焦点时,会弹出软键盘,如果想实现当EditText获得焦点时…上次鄙人做了一个简单的利用webView实现的一个浏览器!其中遇到了两个问题…可能对于Android开发者来说,软引用这个词有的会不是很熟悉,软引用在Java…在adroid 应用程序中,我们经常会用到异步加载。 所以我们也要知道如何取消…想学习Android编程应该有一年时间了...一直没有真的去做,应该就在几天前吧…
你在Android开发过程中,遇到哪类问题最多?
多线程方面
屏幕的分辨率
网络通信相关
Socket管理
UI和IO方面
作为Android开发者,最头疼是什么?相信大家会异口同声的说Bug!的确,这些是避...
谷歌在新品发布会上正式发布了传闻已久的Android 4.3 Jelly Bean更新。从命名可...
作为Android开发者,我们都离不开Android模拟器来运行我们项目,当然,你可能会...
作为Android开发人员,在开发项目的过程中,我们往往会遇到各种各样的难题,针...Android Studio 真是吃内存大户
12:14:45 +08:00 · 13504 次点击
这两天老是提示内存不够用, 现在 8G 内存,分了 2G 给它,还嫌不够,可惜不能再加了
54 回复 &| &直到
17:44:00 +08:00
& & 12:15:57 +08:00 via iPhone
& & 12:20:33 +08:00
请升级你的 AS 的版本,和用 xcode 的 ios 同事比 AS 不是很吃内存了,请升级的 1.4 或者 1.5perview2
& & 12:22:50 +08:00
@ 已经是 1.4 了,感觉是没优化好,上个版本没问题
& & 12:25:41 +08:00
罪魁祸首是 gradle , gradle 在执行构建的时候巨消耗内存,内存大到可以 600M+以上,并且通常不会下降,经常的 AS 关闭了它还在占用巨大内存。
然后就是 AS 本身,特别是新建项目或者刷新项目,建立索引的时候巨消耗内存,而且也通常不会下降!
我 8G 内存开 AS ,在跑安卓虚拟机然后上上网查查资料... 之前没有开虚拟内存,由于我是 Linux ,本身就会缓存剩余内存,不一会而 8G 就占满了,真的卡成狗了。
后来分配 2GB 的虚拟内存在一块 SSD 上,现在爽歪歪了,即使同时开 3 个虚拟机,同开 IDEA+AndroidStudio ,项目随便刷新构建,都不会卡。因为虚拟内存占用很高的原因,只会让机器速度变慢一点点。。。
& & 12:26:58 +08:00
不仅耗内存,能耗也很大。
& & 12:35:28 +08:00
@ 我是同时打开了三个项目的情况下出现这个问题的,只打开一个的话没问题了。
& & 12:38:25 +08:00
内有 16G 32G 内存 不要搞。。。。。。。。。。。。。。。。。。。。。 8G 是穿越火线的配置
& & 12:58:23 +08:00 via Android
@ 小心你的 ssd 寿命
& & 13:33:23 +08:00
有没有人试过 JVM 的与 heap 管理有关的参数?(可以让它把已经占有的空闲内存还给系统)
& & 13:38:21 +08:00
eclipse 笑而不语 不光吃内存,还光吃不干
& & 13:39:37 +08:00
OS X 10.9
内存 8GB
Android Studio 1.3
敲代码时 AS 内存占用还好,就是一 build 的时候整个人都不好了...
& & 13:59:06 +08:00
Build 太慢是硬伤
& & 14:00:30 +08:00
我也只有 8 鸡内存
& & 14:00:49 +08:00
我得长期不超过 800Mb
& & 14:02:06 +08:00
没做软件优化
& & 14:44:00 +08:00
@ 你这肯定是只跑着没干活:)
& & 14:48:02 +08:00
system.loadlibrary 调 so 文件,编译一次然后退出。
然后写 .c 用 gcc 编译,保证不超过 1MB 内存
& & 15:31:56 +08:00
build 慢可以优化的,我之前也慢的不行,现在快多了。
& & 15:36:40 +08:00
@ 好的,回头去看看相关的优化
& & 16:08:50 +08:00
给一个用 java 写的程序分配 2G 内存,你这是在侮辱 java !
& & 16:13:45 +08:00
才 2g 确实不够,我也是 8g 内容,给他分了 4g ,正常使用。
& & 16:18:50 +08:00
& & 16:20:10 +08:00
& & 16:28:45 +08:00
@ 哈哈哈~~~~
& & 16:29:16 +08:00
@ 在写程序的 还 rebuild 了一下
结果变化不大
& & 16:31:17 +08:00
8 鸡内存,就在几分钟前,又崩了一次, Sad 。
因为内存不足,开不了模拟器,我已经真姬调试了。
& & 16:32:31 +08:00
@ 请手动切换 gradle 到 2.4 或以上版本
我的 Android Studio 是 1.4 beta3 ,不知道更新会不会解决
& & 16:33:38 +08:00
gradle2.4 就是 google I/O 上面讲的优化过的版本。现在已经 2.7 了。更新 gradle ,并且让它后台启动一个服务。比以前好多了。
& & 16:36:07 +08:00
手动优化
org.gradle.daemon=true
org.gradle.parallel=true
& & 16:38:16 +08:00
还有一步:
sudo ln -s /home/imivan/gradle-2.4/bin/gradle /usr/bin/gradle
优化过之后, 4G 内存的笔记本在 Linux 下速度还可以
& & 16:56:48 +08:00
@ 其实我一直都是追新族,我的 idea 就是 gradle2.7 。
只是 android-studio 频繁升级 于是就干脆用内置的 gradle 了。
之前看到 AS14 的 beta 升级日志的时候确实看到了关于 AS 在构建上的优化,还有重启时候 gradle 同步问题,我还是换上本地的新版 gradle 试试吧 。。。
不过还是不能忍,即使是 Java 大型项目用 gradle 来构建也比 AS 上的 gradle 构建结构小得多安卓要快
& & 16:56:59 +08:00
之前 4G 内存 mac 太慢,所以转到台式机开发了,怒升内存到 32G ,爽歪歪
& & 17:01:47 +08:00
安卓用 Gradle2.7 有时候会有点问题,所以我还是用 2.4
& & 17:42:55 +08:00
@ 黑出艺术价值了
& & 17:57:02 +08:00
1.4 有明显内存泄漏。码了一下午,现在已经 13.68g 了,目前情绪稳定,关掉重开。
& & 19:29:42 +08:00
公司给的 4G 内存笔记本,估计就 3000 块,
android studio 卡成狗,偶尔还要开一下 Eclipse ,别提有多痛苦
& & 19:50:52 +08:00 via iPad
自己买开发机 16G ,还好够用
& & 20:01:00 +08:00
开两个项目,常出现意外退出。 rMBP 13 , 8G 内存
& & 20:43:58 +08:00
内存从 4G 一路升级到了 16G …… 感觉要上固态硬盘了……
& & 20:49:10 +08:00
双十一准备再加一条 8G 了
& & 21:55:39 +08:00
Gradle 升 2.8
16G 的 MBP 从来没遇见问题 AS 这东西卡了就重启就好了
& & 23:33:44 +08:00
对于 ide 来说 2g heap 不太可能不够,日常总是开着 ide 的话建议配置 xms / xmx 都是 2g 以减少内存波动
2g 都报 OOM 基本上可以判定要么是内存泄漏要不是某个操作有 bug 在申请大量内存, heapdump 太大 report bug 带 heapdump 基本上不太可能不过还是建议 report 一下
& & 07:20:50 +08:00
@ 谢谢提供详细的优化方法
@ 哈哈,忘了 Java 年轻的时候就饭量大
@ 谢谢,我也换成 2.8 了
@ 非常好的建议
SSD 一定要上,有质的飞跃
@ 如果条件允许,建议自己买机器,时间是最宝贵的,浪费不起
& & 07:41:03 +08:00 via Android
@ 你是不是只写 demo
& & 09:40:54 +08:00
一路升级到 16GB 的 MBP ,最近又有了 24GB 的 Mac Pro 。
才不会让工具阻碍生产力呢,逃 233.。。
& & 11:21:25 +08:00
1.5p 自带 gradle
感觉还好啊
& & 11:21:40 +08:00
忘了说,我还是 4g 的内存
& & 17:03:31 +08:00
@ 试用了 1.5p2 ,感觉响应速度变快了
& & 20:04:59 +08:00
我 3000 买块的神舟,优化过还好
& & 10:51:37 +08:00
8G 还好吧,我 8G 的台式机, AS 用起来还蛮快的。
& & 23:06:26 +08:00
开了 Android Studio 和 Chrome 后整台电脑都不好了,两个吃货
& & 22:21:14 +08:00
ssd 必須的,最好選 500MB/s 同步讀寫的,非同步或是小於 300MB/s 根本渣.
gradle 優化上面都說了.所以我發了一篇 jvm 優化:
& & 17:50:04 +08:00
不觉得吃内存啊,我电脑内存 16G ,运行很流畅从来没卡过。
& & 17:44:00 +08:00
我就搞了个 virtualbox 给了 2G 内存,用 1.4 的 AS ,感觉可以啊
& · & 1760 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 65ms · UTC 06:51 · PVG 14:51 · LAX 23:51 · JFK 02:51? Do have faith in what you're doing.Android Studio 真是吃内存大户 - V2EX
Android Studio 真是吃内存大户
12:14:45 +08:00 &ldehai
这两天老是提示内存不够用, 现在 8G 内存,分了 2G 给它,还嫌不够,可惜不能再加了
13504 次点击所在节点 &
lianyue 12:15:57 +08:00才 2g
yy 12:20:33 +08:00请升级你的 AS 的版本,和用 xcode 的 ios 同事比 AS 不是很吃内存了,请升级的 1.4 或者 1.5perview2
ldehai 12:22:50 +08:00@ 已经是 1.4 了,感觉是没优化好,上个版本没问题
HentaiMew 12:25:41 +08:00罪魁祸首是 gradle , gradle 在执行构建的时候巨消耗内存,内存大到可以 600M+以上,并且通常不会下降,经常的 AS 关闭了它还在占用巨大内存。
然后就是 AS 本身,特别是新建项目或者刷新项目,建立索引的时候巨消耗内存,而且也通常不会下降!
我 8G 内存开 AS ,在跑安卓虚拟机然后上上网查查资料... 之前没有开虚拟内存,由于我是 Linux ,本身就会缓存剩余内存,不一会而 8G 就占满了,真的卡成狗了。
后来分配 2GB 的虚拟内存在一块 SSD 上,现在爽歪歪了,即使同时开 3 个虚拟机,同开 IDEA+AndroidStudio ,项目随便刷新构建,都不会卡。因为虚拟内存占用很高的原因,只会让机器速度变慢一点点。。。
wl9739 12:26:58 +08:00不仅耗内存,能耗也很大。
ldehai 12:35:28 +08:00@ 我是同时打开了三个项目的情况下出现这个问题的,只打开一个的话没问题了。
Smirnoff 12:38:25 +08:00内有 16G 32G 内存 不要搞。。。。。。。。。。。。。。。。。。。。。 8G 是穿越火线的配置
wwqgtxx 12:58:23 +08:00@ 小心你的 ssd 寿命
hantsuki 13:33:23 +08:00有没有人试过 JVM 的与 heap 管理有关的参数?(可以让它把已经占有的空闲内存还给系统)
ilotuo 13:38:21 +08:00eclipse 笑而不语 不光吃内存,还光吃不干
hackerwgf 13:39:37 +08:00OS X 10.9
内存 8GB
Android Studio 1.3
敲代码时 AS 内存占用还好,就是一 build 的时候整个人都不好了...
pepsin 13:59:06 +08:00Build 太慢是硬伤
lincanbin 14:00:30 +08:00
我也只有 8 鸡内存
iv2ex 14:00:49 +08:00
我得长期不超过 800Mb
iv2ex 14:02:06 +08:00没做软件优化
ldehai 14:44:00 +08:00@ 你这肯定是只跑着没干活:)
typcn 14:48:02 +08:00system.loadlibrary 调 so 文件,编译一次然后退出。
然后写 .c 用 gcc 编译,保证不超过 1MB 内存
ldehai 15:31:56 +08:00@
@
build 慢可以优化的,我之前也慢的不行,现在快多了。
hackerwgf 15:36:40 +08:00@ 好的,回头去看看相关的优化
wesley 16:08:50 +08:00给一个用 java 写的程序分配 2G 内存,你这是在侮辱 java !
第 1 页 / 共 3 页
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到
上打开本讨论主题的完整版本。
是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
is a community of developers, designers and creative people.他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Android Studio 内存泄漏分析指南Android Studio 内存泄漏分析指南GodTucao百家号最近在优化公司的项目,想针对内存泄漏进行分析一下,查阅网上的一些资料,发现苦逼的是,资料一大堆,但是内容都差不多,至今未找到一篇实战的内存泄漏分析,全部停留在理论知识上,最后查阅了一些外文文献,才有了一点思路,好吧!既然没有实战分析,我就做第一人,把我学到的分享出来,希望对你们有帮助,当然有说的不对的,望各位指出来~内存泄漏原因当应用不需要某对象时候,忘记释放分配的内存,该对象仍然保持被引用状态(当对象拥有强引用,GC无法回收),从而导致内存泄漏泄漏的源头泄漏的源头有很多,有开源的第三方框架引起的、android系统自身造成的如webview的内存泄漏,还有一个是我们可以控制的就是自身编码引起的内存泄漏,这也是我们可以避免的,一下情况容易出现内存泄漏一、 Context 引起的内存泄漏常见问题:这个是最常见的,因为Activity经常要用到上下文Context,很有可能Activity作为Context传递给某些类,Activity生命周期结束之后,某些类仍然存活并保持着该Activity的引用,保持引用就无法被回收。从而导致内存泄漏解决方案:下次如果要传入context给某些类的时候,最好是用ApplicationContext,这样可以有效避免内存泄漏在界面销毁的时候,手动释放掉引用过activity的context二、Static 静态变量我们有时候会为了方便,设置某个Activity或者View为静态变量,但是你要知道,static变量是要贯穿整个应该的生命周期,就是意味着即使Activity销毁,static变量也不会销毁,所以,如果你把View或者Activity设置为静态变量,这会导致当前的Activity会一直存在,从而导致内存泄漏尽量避免使用static变量如果非要使用的话,记得在界面销毁的时候,把静态变量也释放掉,简单说就是把静态变量置空,如staticView=null三、非静态内部类、匿名内部类持有外部类的引用我们在使用AsyncTash、Handler、TimerTask、Thread的时候,为了方便,直接new一个匿名内部类对象,殊不知我们在new一个的时候,编译器在编译的时候会自动为内部类的构造方法加上外包类的引用,所以这些匿名内部类会持有Activity,当这些匿名内部类处理非常耗时的操作时候,就算Activity生命周期结束,也不会被销毁,这就会造成内存泄漏当Activity销毁的时候,对不需要的匿名内部类进行任务停止操作使用静态内部类,静态内部类内部使用弱引用来引外外部类,这样当Activity销毁的时候,弱引用是可以被回收的四、其他引起的泄漏我们在使用系统服务的时候,比如注册了一些广播监听,在使用完后,要释放掉我们在给View绘制动画的时候,View被动画持有,而Activity又被View持有引用,导致Activity也无法释放。所以在Activity销毁时,调用animator.cancel()来停止动画内存泄漏分析-实战篇这个才是尽头的重头戏,前面写的只是对网上文献的一些总结分析工具MAT :eclipse时代的分析工具,具体分析实战可以参考这篇文章LeakCanary: Square开源的内存泄漏探测器,具体使用参考这篇文章Android Monitor:Android Studio 自带的分析工具,今天的重头戏Android Monitor生成HPROF文件,点击红框中有绿色下载箭头的按钮(Dump java Heap),这个会生成以hprof结尾的文生成的效果如下图,简单介绍一下界面功能功能描述:名称描述Total Count该类的实例总数Heap Count所选择的堆中该类的实例的数量Sizeof单个实例所占空间大小(如果每个实例所占空间大小不一样则显示0)Shallow Size堆里所有实例大小总和(Heap Count * Sizeof)Retained Size该类所有实例所支配的内存大小Instance具体的实例Reference Tree所选实例的引用,以及指向该引用的引用。DepthGC根节点到所选实例的最短路径的深度所选实例的大小Dominating Size所选实例所支配的内存大小3. 也许你看完这些也还是一头雾水,不知道怎么分析,没关系,我们不就是要找到内存泄漏的源头嘛,来看这里,要开始放大招啦,看到上图中最右边的 Analyzer Tasks,点击这个版块,这个版块就是主要的查找内存泄漏版块4. 启动页很简单,点击绿色运行按钮就好,之后会在下面列出可能存在内存泄漏的Activity,如果没显示,说明启动的Activity中没有内存泄漏5. 查看引用树(Reference Tree),都是根据这个查找内存泄漏的具体地方的6. 一般有类似三角形的,就是一直被引用这,导致内存泄漏,找到对应的地方也很简单,右键项目点击Jump to Source就会打开对应泄漏源码的地方啦,然后我们在根据上面说的泄漏原因,及解决办法修正就好啦上面一共有五六处内存泄漏,都是我故意写出来的,目的就是为了练习排查分析内存泄漏,特地放上源码,demo中内存泄漏以及修复代码都有,欢迎下载学习,如果觉得不错,顺手给个star下载地址:MemoryLeakSamples本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。GodTucao百家号最近更新:简介:科技信息共享,科普产品专业审查。作者最新文章相关文章}

我要回帖

更多关于 8g内存不够用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信