换了台64位机子,重装了win7系统,然后在装eclipset和adt的过程中遇到了很多问题,终于都解决了,记录一下:
1、下载最新jdk(64位)并安装
官网地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、下载最新eclipse(64位)并安装
官网地址:http://www.eclipse.org/downloads/
3、给eclipse装adt插件
方法一:在线安装
①注意adt的安装依赖于eclipse的一个插件叫做WST Server Adapters,最新的eclipse是不包含这个插件的,在装adt前首先要更新这个插件,否则会提示下面的错误:
Cannot complete the install because one or more required items could not be found.
Software being installed: Android Development Tools 10.0.0.v201102162101-104271
(com.android.ide.eclipse.adt.feature.group 10.0.0.v201102162101-104271)
Missing requirement: Android Development Tools 10.0.0.v201102162101-104271
(com.android.ide.eclipse.adt.feature.group 10.0.0.v201102162101-104271) requires 'org.eclipse.wst.sse.ui 0.0.0' but it could not be found
so,Help->install new software,输入地址http://download.eclipse.org/releases/helios,选中Web,XML,and Java EE Development下的WST Server Adapters安装
②上面的插件安装完毕以后,就可以按照正常的步骤更新adt了
Help->install new software,输入地址https://dl-ssl.google.com/android/eclipse/,全选安装
注,有些人可能网络状况不大好,这个时候可以选择离线安装,上网搜个最新的adt包下载下来。安装步骤:Help->install new sotware->add,在archive里输入本地的adt包地址,和上面的安装步骤一样,但注意不要勾选最下面的contact all updatesXXX,就是纯离线安装。
如图:
注:实际上,在我已经安装了wst插件以后,再离线安装adt,依旧会报上面提示的缺少android develop tools的错误,后来网络恢复了,也就未再深入研究解决办法
4、导入sdk
由于我之前就已经下载过sdk,已经有目录了,直接重新指向原来的旧目录即可。window->preference->Android,设定目录
5、最后,eclipse自身的配置
android工程导入正常,但一编译就崩,报错:
java was started but returned exit code = -805306369
第一次报错截图:
其实截图里已经给出原因了,在没有指名java路径的情况下,eclipse会默认到system32里面去寻找。此时,需要进入eclipse的根目录,修改其配置文件eclipse.ini,在-vmargs 之前,加上2句,指名vm地址:
-vm
C:/Program Files/Java/jdk1.6.0_43/bin/javaw.exe
注意,这2句必须加在--vmargs之前。
但是,光增加了这个参数还不行,eclipse依旧会崩溃,报错如下:
大家可以看到,我这里的vm地址写的是斜杠/而不是反斜杠\,因为在指定vm后eclipse还是报错,我上网搜到一位仁兄说这样可以解决,病急乱投医,于是就改成了这样。(事后我验证过,用斜杠/和反斜杠\居然都可以,不影响。不过windows的路径一直都是\,不建议修改,感觉有点莫名其妙)
此时我已改过vm地址了,而且此时我也已修改过eclipse的内存配置,改成了网上通用的防止eclipseOOM的配置,但依旧还是报这个错。
我找了很久的原因,没有想到原因居然还是eclipse内存过小!
eclipse的默认配置:
-vmargs
-Xms40m
-Xmx512m
用这个默认配置跑大工程的话,eclipse会直接报heap错误的。我一早就已改成了下面的:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=128M
-XX:MaxPermSize=256M
由于已经改过一次配置(自认已经排除了内存过小的原因),但是-805306369的错误依旧存在(关键此时,eclipse也不会给你提示oom或者heap错误了,坑爹),我一直以为是其他配置不正确引起的,整了半天也没解决,最后参见http://www.i5a6.com/930.html的解决办法,又改大了内存,问题解决,编译正常。
再次改后的配置如下:
-vm
C:/Program Files/Java/jdk1.6.0_43/bin/javaw.exe
-vmargs
-Xms128M
-Xmx1024M
-XX:PermSize=128M
-XX:MaxPermSize=256M
now,再编译运行,ok了。
可见-vm参数和-vmargs参数缺一不可,一个都不能错。
PS:eclipse.ini的各项参数介绍:
-vmargs: 说明后面是VM的参数
-Xms40m: 虚拟机占用系统的最小内存,初始化内存大小
-Xmx256m: 虚拟机占用系统的最大内存,Xmx是最大可使用内存大小
-XX:PermSize:最小堆大小。(一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置)
-XX:MaxPermSize:最大堆大小。这个也适当大些。
eclipse.ini文件用来配置eclipse启动时候的内存分配方案,XMX这个参数配置的大小很关键,太小,eclipse垃圾回收会过于频繁导致很慢,或者内存堆栈溢出而崩溃。太大,eclipse会吃掉大量内存,垃圾回收周期变长,但每次回收会很慢,影响使用。
PermSize大一点肯定更好,而且最好是设置PermSize和MaxPermSize一样大。理由如下:
PermSize 和MaxPermSize如果设置为相同还可以在一定程度上提高性能,因为,PermSize在不断的变化中会需要转移其中的数据。如果固定了以后,则可以减少每次扩大PermSize带来的性能损失。
再次修改后的配置如下:
-vm
C:\Program Files\Java\jdk1.6.0_43\bin\javaw.exe
-vmargs
-Xms512M
-Xmx2048M
-XX:PermSize=1024M
-XX:MaxPermSize=1024M
-XX:+UseParallelGC
经对比,编译和运行比上面的配置速度提高了30s.
PS:堆内存和非堆内存:
java虚拟机有一个堆
堆:堆就是运行时数据区域,类实例以及数组的内存都从这里分配(new一个class,消耗的就是堆内存)。java程序运行时,JVM就会从系统获取一些内存创建堆
非堆:除了堆之外的,剩余的就是非堆内存。
非堆内存=code cache+permanet Generation
codeCache:代码缓存,编译和保存本地代码
permanet Generation:JVM的静态数据,如class和method对象(heap只保存class的实例)
GC:garbage collection
堆内存简介: