Android stidio使用一段时间电脑占用内存不释放内存被占用无法释放

66665人阅读
Android(197)
Gradle Project项目、Module模块导入最近看到网上很多人在抱怨,Android Studio很难导入github上下载下来的一些项目,主要包括:1、导入就在下载Gradle2、根本导不进下面我分2部分来讲解正确的导入姿势:1、导入完整的Github Project我们在github上找一个项目工程目录如上,里面的东西其实分为2部分,工程相关和项目相关工程相关用于配置整个项目的编译环境和依赖,项目相关就是你的代码和配置文件啦我们先来看工程相关,他包含这样几个文件夹:由于现在Gradle还不是太成熟,所以版本更新会比较快,如果当初项目作者使用的是其他版本的Gradle,而你没有,AS就好默认去下载最匹配的Gradle,可偏偏在国内,这个下载奇慢无比,而且Gradle的文件也挺大有50+MB,所以,我们需要修改下配置先:打开gradle文件夹warpper文件夹,打开gradle-wrapper.properties#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
可以看见最后一行,作者使用的是gradle-1.12-all.zip,而我们,我们打开这样一个目录C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55我们使用的是gradle-2.1-all.zip,所以AS就煞笔的再去下一个gradle-1.12-all.zip了,OK我们修改下配置改为:distributionUrl=http\://services.gradle.org/distributions/gradle-2.1-all.zip然后选择open exiting,选择我们的Build.gradle文件,就可以打开项目了。但是——————————————————————————————————————————————这个办法在最新的2.1上好像————————————————————————————————————不行了具体原因我也没有找到,但可以想到Android Studio和gradle 2个都是beat中的玩意,出点问题也不奇怪,但愿以后正式版上能ok就好下面我们使用另一种方法,移花接木:我们先来看看我们自己创建的项目编译好后是什么样子:多了几个gradle的文件哈,OK,我们把工程相关的gradle文件夹copy过来,替换掉要导入工程的gradle文件夹copy需要这几个文件夹:OK,下面再重新导入Exiting Project,选择Build.gradle文件,即可导入Project。2、导入一个module如果我们新建了一个工程,需要导入其他工程的一个module怎么弄呢,如同我们上面的那个项目,需要导入他的library这个其实就很简单了,我们前面搞那么多,都是因为工程无法找到正确的编译文件,但是module就不一样了,他只是用一个Build.gradle文件来控制它这个module的编译规则,因此,我们只要导入就可以了,工程的编译配置还是我们自己工程的配置,只是导入的时候需要注意下,这里我们需要选择module的目录,而不是再选择Build.gradle文件了。ok,选择导入,就可以完成module的添加了。归根到底,gradle的编译方式与Android的Makefile还是有点类似的,这样的方式,项目越大,优势越明显,但在我们平时的小app开发上,确实显得有点臃肿,编译时间实在太长了!!!但愿正式版能有所改善,相信Google能做到。对于无法导入项目这件事,说到底还是对Gradle语法和编译环境的不熟悉造成的,所以说,学东西,搞清楚原理很重要啊,特别是像这种刚开始普及的东西,哪来那么多现成的东西可以让你借鉴,只能靠自己,Read The F**king Source Code。以上。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
Android群英传,包含了Android开发技巧与提高
网上购买:
本书源码:
访问:1531428次
积分:19027
积分:19027
排名:第515名
原创:249篇
转载:18篇
评论:2629条
为你推荐最新的博文~更有惊喜等着你
阅读:32381
阅读:77264
阅读:58588
(1)(2)(2)(3)(4)(3)(2)(3)(1)(1)(2)(1)(1)(1)(4)(4)(1)(1)(10)(4)(12)(10)(1)(10)(18)(11)(11)(1)(3)(3)(10)(6)(8)(3)(1)(2)(1)(2)(23)(2)(8)(33)(35)(9)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'本帖子已过去太久远了,不再提供回复功能。转载请注明本文出自大苞米的博客(),谢谢支持!
公司派来一个去美国参加完AnDevCon大会的来给我们分享大会上学习的内容。
AnDevCon并非类似于苹果的WWDC和Google I/O,而是民间的android程序员组织,Google来support的,一年两次。讲的都是实际开发的一些经验什么的,都很实在。
他给我们分享了好几个topic,我慢慢整理以后再分享给大家。
他第一个向我们推荐的就是不要用Eclipse了,因为据说去参加那个大会,你用Eclipse都不好意思和别人打招呼。因为现在开发都在用Android Studio。
在他演示几个功能后感觉,确实完爆了Eclipse,所以我也下了一个来用,Mac和Win7的都试过了,但还是Mac做开发比较爽。
Android Studio是谷歌13年推出的一款基于Intellij IDEA开发的Android IDE。据说之前有很多bug,所以导致没有多少人去使用,在最近几个版本的更新后已经非常不错了,基本到了不用就out的地步了。下面来对比一下Android Studio和Eclipse。
Android Studio对比Eclipse的优势有如下:
1.比Eclipse漂亮
本人就喜欢黑色的主题,之前用Eclipse费死劲下的那个黑色的主题实在太山寨了。Android Stuido自带的Darcula主题的炫酷黑界面实在是高大上。
2.比Eclipse速度快
包括启动速度,响应速度,内存占用等等全面领先与Eclipse。
3.提示,补全更加智能,更加人性化。
提示补全对于开发来说意义重大,熟悉Android Studio以后效率提升的不止一点点哦。每次运行Android Studio都会有小Tips, 非常赞。
4.整合了Gradle构建工具
Gradle是一个新的构建工具,集合一些Ant和Maven的优点,但由于我一点也不了解Gradle而且对于Ant和Maven也是一知半解,所以这个对我算是缺点吧。而且每次都要同步Gradle有点烦,估计还是没体会到他的强大,有时间需要去好好学习一下。
5.支持Google Cloud Platform
Android Studio支持本地的Google Cloud Platform,可以让你去运行服务器端的代码。这个我也不是特别了解就不多介绍了。
6.强大的UI编辑器
Android Studio的编辑器非常的智能。比如新建一个控件,控件的width和height属性会自动的补全,不用每次都要手动的打上两行android:layout_width和android:layout_height。还有定义颜色后会自动把颜色显示在旁边(这个对我超级好用)。等等还有其他很多小细节做的都非常不错,大大提高了编辑UI的效率。而且可以任意拖拽控件,虽然真正开发基本用不上。
7.更完善的插件系统
我最讨厌Eclipse的一个地方就是他的插件系统,下载和管理极其不方便。但在Android Studio中可以像Apple store那样浏览所有的插件,直接搜索,下载和管理它,超级赞。
8.完美的整合版本控制软件
安装的时候就自带了如GitHub, CVN等等流行的版本控制工具
9.Android Studio是Google推出的
Android Stuido是Google推出,专门为ANDROID“量身订做”的,Google的亲儿子。作为Android Developer大腿一定要抱紧。
大家看完以后是不是心动了呢?但是从Eclipse转到Android Studio之路困难重重。
Eclipse转Android Studio的困难:
1. Android Studio 和 Eclipse的目录结构不同,Android Studio多了一个Module的概念
2. Android Studio 和 Eclipse项目的相互导入,Eclipse导入Android Studio还算容易,但Android Studio项目导入Eclipse则相当费劲
3. Gradle的学习和使用, 使用Android Studio开发始终离不开Gradle这个东西,之前对Ant我就一知半解,这回又要学Gradle有点无从下手的感觉
4. 界面的适应
5. 快捷键的适应,虽然Android Studio可以转换成Eclipse的快捷键习惯,但是还有相当多的Android Studio新快捷键需要适应
6. 处理各种遗留项目等等原因
大家也看到了,尽管Android Studio有这么多好处,但是想彻底转过来目前基本是不可能的。主要原因就是多年养成的习惯问题和不同于Eclipse的项目结构,还有可恨的Gradle。
但是Android Studio毕竟是Google的亲儿子,他不仅有Google这么牛逼的爹,而且还有个IntellJ idea这么牛逼的妈。我觉得未来Android Studio肯定是趋势,就算不转型的话早点熟悉一下也是好的,毕竟多了解一个IDE也不是坏事。所以就一句话,赶紧来试试吧。
Android Studio 的官方下载地址:
本来想写一个Android Studio使用文档的,但发现已经有很不错的了,大家自己找吧。最后放几个Android Studio的截图诱惑一下大家。
传说中炫酷黑的主题。
使用黑色主题的方法是:点击File-&Settings-&IDE Settings,Appearance-&Theme。里面有3个主题,Darcula
IntelliJ Windows,其中Darcula就是那个黑色的主题
强大UI编辑界面:旁边就可以直接显示出UI效果,不用像Eclipse中调整一下控件,切换一下Tab,看一眼效果后再切回来继续调整。
下面两个图是Android Studio和Eclipse的目录结构,习惯了Eclipse的话去适应Android Studio应该需要一些时间。Android Studio中多了一个Module的概念。
& & & & & & & & & & &&
创建文件的视图,完全Android私人定制,无论你想要什么Android Studio全列出来了
超赞的插件商店界面,想搜什么有什么,想装什么就装什么
插件管理界面:
本文已收录于以下专栏:
相关文章推荐
Eclipse是老牌的开发工具,相信早期开发android程序每一个码农都使用过这个软件,添加ADT插件之后就能开发android程序了。因为是开源的,所以开发起项目来还是倍儿爽的...直到遇到Goo...
毫无疑问,这个是Android Stuido的最大优势,是Google推出,专门为Android“量身订做”的,是Google大力支持的一款基于IntelliJ IDEA改造的IDE,这个应该能说明为...
Android Studio 与 Eclipse 目录结构对比
本文转载自大苞米的博客(http://blog.csdn.net/a),谢谢支持!
公司派来一个去美国参加完AnDevCon大会的来给我们分享大会上学习的内容。
为什么选择Android Studio 而不再固守 Eclipse?Android Studio 现在的版本已经比较稳定了,刚出来时也是各种BUG,自己用了下,摸索了一天,感觉挺好的。优点之一:代码提...
Android Studio 比 Eclipse 好用在哪里
1、Google推出的
毫无疑问,这个是它的最大优势,Android Stuido是Goo...
Android Studio初步使用教程
今年的Google全球开发者大会虽然没有新的Android系统和设备,但是还是推出了一些不错的产品,Android Studio就是其中之一。这个基于I...
以前一直用VS 2012来调试C/C++代码,F5、F10、F11用起来甚是顺手,前面也写过一篇关于VS最好用的快捷键:Visual Studio最好用的快捷键(你最喜欢哪个)
,所以对于调试C/C+...
eclipse不多说基本上就是java开发中的标准,而刚发布正式版的android studio一经发布就有一发不可收拾的势头,大有取代adt的趋势!
google之所以用as取代adt成为官方i...
转载地址:/p/d3ef9c62b6c8
由于公司的一个产品,可能需要在APK内部内嵌WebView,以显示HTML内容,因此花了...
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)使用新版Android Studio检测内存泄露和性能
内存泄露,是开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。
怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。
熟悉Android Studio界面
工欲善其事,必先利其器。我们接下来先来熟悉下Android Studio的界面
一般分析内存泄露, 首先运行程序,打开日志控制台,有一个标签MemZ喎"/kf/ware/vc/" target="_blank" class="keylink">vcnkgLM7Sw8e/ydLU1NrV4rj2vefD5rfWzva1scews8zQ8sq508O1xMTatObH6b/2LCDSu8S/wcvIuywgztLDx9TZ0rKyu9Do0qq/4L/gtcTU2mxvZ2NhdNbQ0bDV0sTatOa1xMjV1r7By6GjPC9wPgoKPHA+PHN0cm9uZz7NvNbQwLbJq8f40/KjrL7NysezzNDyyrnTw7XExNq05qOsILvSyavH+NPyvs3Kx7/Vz9DE2rTmo6w8L3N0cm9uZz4gPGJyPgq1sci7o6xBbmRyb2lkxNq05rfWxeS7+tbGyse21MO/uPbTptPDs8zQ8tbwsr3U9rzTLCCxyMjnxOOzzNDytbHHsMq508MzME3E2rTmLCDPtc2zv8nE3LvhuPjE47fWxeQ0ME0sILWxx7C+zdPQMTBNv9XP0CwgyOe5+7PM0PLKudPDwcs1ME3ByyzPtc2zu+G99L3T18W4+LWxx7CzzNDy1Pa809K7sr+31iyxyMjntO+1vcHLODBNo6wgILWxx7DE47XEv9XP0MTatOa+zcrHMzBNwcuhoyAgtbHIuyzPtc2zyOe5+7K7xNzU2bj4xOO31sXktu7N4rXExNq05iyzzNDy19TIu77Nu+FPT00oxNq05tLns/YpwcuhoyDDv7j206bTw7PM0PLX7rjfv8nS1Mnqx+u1xMTatOa6zcrWu/rD3MfQz+C52KOsscjI587StbHHsMq508O1xLuqzqpNYXRlNyy8q8/etPO4xcrHMjAwTSzL47HIvc+437XEwcssICDSu7DjMTI4TSC+zcrHvKvP3sHLLCDJ9dbB09C1xMrWu/rWu9PQv8nBr7XEMTZNu/LV3zMyTaOs1eLR+bXEyta7+s/gttTT2sTatObS57P2tcS4xcLKt8ezo7TzwcuhozwvcD4KCgoKPGgyIGlkPQ=="我们怎么检测内存泄露呢">我们怎么检测内存泄露呢
首先需要明白一个概念, 内存泄露就是指,本应该回收的内存,还驻留在内存中。
一般情况下,高密度的手机,一个页面大概就会消耗20M内存,如果发现退出界面,程序内存迟迟不降低的话,可能就发生了严重的内存泄露。
我们可以反复进入该界面,然后点击dump java heap 这个按钮,然后Android Studio就开始干活了,下面的图就是正在dump
dump成功后会自动打开 hprof文件,文件以Snapshot+时间来命名
通过Android Studio自带的界面,查看内存泄露还不是很智能,我们可以借助第三方工具,常见的工具就是MAT了,下载地址 https://eclipse.org/mat/downloads.php ,这里我们需要下载独立版的MAT. 下图是MAT一开始打开的界面, 这里需要提醒大家的是,MAT并不会准确地告诉我们哪里发生了内存泄漏,而是会提供一大堆的数据和线索,我们需要自己去分析这些数据来去判断到底是不是真的发生了内存泄漏。
接下来我们需要用MAT打开内存分析的文件, 上文给大家介绍了使用Android Studio生成了 hprof文件, 这个文件在呢,
在Android Studio中的Captrues这个目录中,可以找到
注意,这个文件不能直接交给MAT, MAT是不识别的, 我们需要右键点击这个文件,转换成MAT识别的。
然后用MAT打开导出的hprof(File->Open heap dump)
MAT会帮我们分析内存泄露的原因
LeakCanary
上面介绍了MAT检测内存泄露, 再给大家介绍LeakCanary。
项目地址:/square/leakcanary
LeakCanary会检测应用的内存回收情况,如果发现有垃圾对象没有被回收,就会去分析当前的内存快照,也就是上边MAT用到的.hprof文件,找到对象的引用链,并显示在页面上。这款插件的好处就是,可以在手机端直接查看内存泄露的地方,可以辅助我们检测内存泄露
在build.gradle文件中添加,不同的编译使用不同的引用:
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3'
在应用的Application onCreate方法中添加LeakCanary.install(this),如下
public class ExampleApplication extends Application
public void onCreate() {
super.onCreate();
LeakCanary.install(this);
应用运行起来后,LeakCanary会自动去分析当前的内存状态,如果检测到泄漏会发送到通知栏,点击通知栏就可以跳转到具体的泄漏分析页面。
Tips:就目前使用的结果来看,绝大部分泄漏是由于使用单例模式hold住了Activity的引用,比如传入了context或者将Activity作为listener设置了进去,所以在使用单例模式的时候要特别注意,还有在Activity生命周期结束的时候将一些自定义监听器的Activity引用置空。
关于LeakCanary的更多分析可以看项目主页的介绍,还有这里https://www.liaohuqiu.net/cn/posts/leak-canary-read-me/
追踪内存分配
如果我们想了解内存分配更详细的情况,可以使用Allocation Traker来查看内存到底被什么占用了。
用法很简单:
点一下是追踪, 再点一下是停止追踪, 停止追踪后 .alloc文件会自动打开,打开后界面如下:
当你想查看某个方法的源码时,右键选择的方法,点击Jump to source就可以了
查询方法执行的时间
Android Studio 功能越来越强大了, 我们可以借助AS观测各种性能,如下图:
如果我们要观测方法执行的时间,就需要来到CPU界面
点击Start Method Tracking, 一段时间后再点击一次, trace文件被自动打开,
非独占时间: 某函数占用的CPU时间,包含内部调用其它函数的CPU时间。
独占时间: 某函数占用CPU时间,但不含内部调用其它函数所占用的CPU时间。
我们如何判断可能有问题的方法?
通过方法的调用次数和独占时间来查看,通常判断方法是:
如果方法调用次数不多,但每次调用却需要花费很长的时间的函数,可能会有问题。
如果自身占用时间不长,但调用却非常频繁的函数也可能会有问题。
上面给大家介绍了若干使用Android Studio检查程序性能的工具,工具永远是辅助,不要因为工具耽误太长时间。如果有问题,欢迎大家纠正。}

我要回帖

更多关于 jvm占用内存不释放 的文章

更多推荐

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

点击添加站长微信