如果您对与AndroidSDK一起蚀,错误:Java堆空间感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于与AndroidSDK一起蚀,错误:Java堆空间的详细内容,我们还
如果您对与Android SDK一起蚀,错误:Java堆空间感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于与Android SDK一起蚀,错误:Java堆空间的详细内容,我们还将为您解答android sdk 和java sdk的相关问题,并且为您提供关于5步避免Java堆空间错误、android eclipse无法执行dex java堆空间错误、android java堆空间、android SDK包引用了java SDK哪些包的有价值信息。
本文目录一览:- 与Android SDK一起蚀,错误:Java堆空间(android sdk 和java sdk)
- 5步避免Java堆空间错误
- android eclipse无法执行dex java堆空间错误
- android java堆空间
- android SDK包引用了java SDK哪些包
与Android SDK一起蚀,错误:Java堆空间(android sdk 和java sdk)
所以最近我在Eclipse中使用我的应用程序时遇到问题,在处理xml文件时出现下一条消息:
ERROR: ''Java heap space''
我已经阅读了尝试在eclipse.ini文件中增加以下内容:
-vmargs-Xmx40m-Xmx512m
至:
-vmargs-Xmx512m-Xmx1024m
但是它将工作一段时间,而不是一个小时或一个小时左右,它将给我同样的错误,我正在使用配备4GB内存的MacBook Air。我有Eclipse
SDK版本:3.7.2内部版本号:M20120208-0800,我刚刚对其进行了更新,所以我不知道这是否就是为什么这样工作,这就是我的eclipse.ini现在的样子:
-startup../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar--launcher.library../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.101.v20120109-1504-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile-vmargs-Xmx512m-Xmx1024m-Xdock:icon=../Resources/Eclipse.icns-XstartOnFirstThread-Dorg.eclipse.swt.internal.carbon.smallFonts
我还能做些什么来解决这个问题?任何帮助都非常感谢。提前致谢。
答案1
小编典典试试这个
在“运行”->“运行配置”中,找到您正在运行的类的名称,将其选中,单击“参数”选项卡,然后添加:
-Xms512M -Xmx1524M
到VM参数部分
很少有用的链接
Eclipse的最佳JVM设置是什么?
编辑:
仅当您进行以下更改时,您的eclipse.ini设置才会生效:
运行->外部工具->外部工具
配置。在jre选项卡-select选项下转到您使用的配置
在工作空间中的同一JRE中运行。
5步避免Java堆空间错误
分享到: 本文由 ImportNew - 光光头去打酱油 翻译自 mapr。欢迎加入翻译小组。转载请参见文章末尾的要求。 牢记以下五个步骤可以为你减少很多头痛的问题并且避免java堆空间错误。 通过计算预期的内存消耗。 检查JVM是否有足够的可用空间。 检查JVM的设置是
分享到:
本文由 ImportNew - 光光头去打酱油 翻译自 mapr。欢迎加入翻译小组。转载请参见文章末尾的要求。
牢记以下五个步骤可以为你减少很多头痛的问题并且避免java堆空间错误。
- 通过计算预期的内存消耗。
- 检查JVM是否有足够的可用空间。
- 检查JVM的设置是否正确。
- 限制节点使用交换空间和内存分页。
- 设置实例slot数量小于JobTracker web GUI计算的数值。
译者注:slot ?:slot不是CPU的Core,也不是memory chip,它是一个逻辑概念,一个节点的slot的数量用来表示某个节点的资源的容量或者说是能力的大小,因而slot是 Hadoop的资源单位。详见这里。
在这篇博文里,我将详细讲解每个步骤,帮助大家更好地理解并正确管理实例(task attempt)内存。
译者注:实例(task attempt) :这个词在官方文档中找到了解释: “Each task attempt is one particular instance of a Map or Reduce Task identified by its TaskID”。
理解怎样管理实例内存是很重要的,这样可以避免Java堆空间错误。当运行 map/reduce 作业(Job)时,你可能会看到实例出现这样的错误:
立即学习“Java免费学习笔记(深入)”;
13/09/20 08:50:56 INFO mapred.JobClient: Task Id : attempt_201309200652_0003_m_000000_0, Status : FAILED on node node1 Error: Java heap space
当试图申请一个超过Java虚拟机(JVM)设置的最大内存限制时就会发生这个错误。
避免Java堆空间错误的第一步是了解你的map和reduce任务的内存需求,以便于你启动一个JVM时设置了适当内存限制。
例如,hadoop-0.20.2-dev-examples.jar中的wordcount 功能。 不管处理什么数据,map 任务都不需要很多内存。唯一需要很多内存的就是在加载运行所需的函数库的时候。当使用默认附带MapR包的wordcount功能时,512MB的内存对于实例JVM是绰绰有余了。如果你打算运行我们提供的Hadoop示例,可以尝试将map实例JVM的内存限制设为512MB。
如果你知道自己的map实例需要多少内存(在本例中是512MB), 那么下一步启动设置好JVM内存。该实例在JVM中的内存是由TaskTracker为Map/Reduce作业处理数据而设定的。 TaskTracker设定的限制可能有两个来源:要么是用户提交作业时指定了内存大小作为该作业配置对象的一部分,或者是TaskTracker产生了 默认内存大小的JVM。
mapred.map.child.java.opts属性被用来为TaskTracker?启动JVM和执行map任务的参数(在reduce任务中也有个类似的属性)。如果mapred.map.child.java.opts属性被设置成“-Xmx512m”,那么map实例JVMs会有512MB的内存限制。相反的,如果-Xmx没有通过配置属性去指定一个数值的话,那么 每个TaskTracker将会为启动JVM计算一个默认的内存限制。该限制是基于TaskTracker为map/reduce task slot分配的数量所决定的,并且TaskTracker分配给Map/Reduce总内存不能超过系统限制。
TaskTracker为map/reduce实例分配的slot数量在TaskTracker启动时就设定好了。通过每个节点上mapred-site.xml文件中两个参数进行控制的:
mapred.tasktracker.map.tasks.maximum mapred.tasktracker.reduce.tasks.maximum
设置这些默认值的规则是基于节点上CPU核心的数量。不过你可以下面两个方法来重载参数:
- 修改mapred-site.xml文件设定一个固定的slots数值。
- 使用自定义规则。
在系统中,TaskTracker? map/reduce实例内存限制是在TaskTracker进程启动时设定的。有两个地方可以设置内存限制。首先在Hadoop conf目录下的hadoop-env.sh脚本中可以显式的设置,你可以添加下面这行来指定内存限制:
export HADOOP_HEAPSIZE=2000
这行命令限制了节点上的所有实例JVM总共可以使用2000MB的内存。如果没有在hadoop-env.sh文件中指定 HADOOP_HEAPSIZE这个参数,那么当MapR warden service启动TaskTracker时会对内存进行限制。?warden service会基于节点上物理内存的数量减去服务运行中已经占用的内存数量得出限制的大小。如果你去看看warden.conf你会看到像这样的一些属性:
service.command.mfs.heapsize.percent=20 service.command.mfs.heapsize.min=512
这个例子表示,warden占用分配给MFS服务节点的20%物理内存或最低512MB(512MB
例如,假设你在一个节点上安装运行ZooKeeper、CLDB、MFS、JobTracker、TaskTracker、NFS、the GUI、HBase Master 和HBase RegionServer。这么多的服务运行在一个节点上,而且每个服务都需要内存,所以warden会将内存按照百分比分配给每个服务,剩下的将会分配 给节点上的map/reduce 实例。如果你分配给这些服务总共60%还有5%为系统预留,那么就还有35%分给节点上的map/reduce实例。如果这个节点有10G的内存,将会有3.5G分给 map/reduce 任务。如果你有 6个map slot和4个reduce slot。如果内存是平均分配的,最终每个JVM的内存限制为350MB。如果你需要512MB内存来运行你的map任务,那么默认设置的情况下是不会运行的,你会遇到Java堆空间错误。
当管理实例内存的时候会意识到还有其它问题。不要强制节点去使用大量的交换空间(swap space)或者触发频繁内存分页读写磁盘。如果你通过显式的在mapred.map.child.java.opts设置“-Xmx500m”来改变提交的作业,将会重写安全的内存限制。但实际上你并没有额外的物理内存。虽然 map/reduce 实例仍能启动,但是会强制使用大量的交换空间,而且无法依赖内核的OOM killer或者其他的方法来防止这种情况发生。如果真的发生这种情况,无法指望节点启动大量分页来迅速恢复。如果只是增加了实例的JVM内存,同时继续在节点上启动相同数量的实例。你会申请更多的内存,需要注意不要超额申请。如果超额申请太多的话,会导致大量的分页,这样节点可能会被挂 起再也无法恢复。除非重启电源。
所以如果你给每个实例JVM增加内存的话,需要通过TaskTrackers来减少分配给map/reduce task slot数量。
这是一个很复杂的情况,因为如果你在集群上并发执行不同的作业,可能来自一个作业(JobA)的实例需要大量的内存,来自另外一个作业(JobB)的实例只需要很少的内存。因此,如果你减少map/reduce slot的数量,会发现会有足够的内存来运行来自JobB任务(task)。但是却没有足够的内存提供给JobA。所以关键就是找到一个平衡点,一个可以允许进行一些超额申请却不会导致节点被挂起的平衡点。
为了协助这个任务,TaskTracker?将会着眼于当前所有在运行的 map/reduce tasks 所使用的内存数量。不是只看这些任务的最大内存限制,而是所有运行中的实例实际利用的内存总数。当消耗的内存达到一定级别,TaskTracker 会杀死一些运行的实例来释放内存,以便其他的实例能正常执行完并且不会造成节点上的分页过多。
举个例子,如果你想在一个小型的集群或者单一节点上运行wordcount示例,碰到“Java堆空间”错误,最简单最快的解决方法就是通过编辑/opt/mapr/hadoop/hadoop-0.20.2/conf/mapred-site.xml中的设置来减少?map/reduce 实例 slot的数量:
mapred.tasktracker.map.tasks.maximum mapred.tasktracker.reduce.tasks.maximum
将实例的slot的数量设置为小于当前计算结果是非常重要的。当前计算的数量可以通过进入JobTracker web界面来确定。例如,如果你有一个TaskTracker?,显示它有6个mpa slot和4个 reduce slot,那么你应该设置 3个map slot、2个 reduce slot。然后通过下面这行命令重启节点上的TaskTracker进程:
maprcli node services -nodes -tasktracker restart
减少slot的数量重新启动后,重新提交wordcount作业。如果没有额外内存申请,每个实例、JVM都会分配到更多的内存。这是一个安全的解决方法,节点不会产生大量分页。这是一种简单的解决方案,不需要大量计算内存。这也是快速的方法,只需要编辑下配置文件并重启下服务就好了。
为了避免Java堆空间错误,记住下面这些步骤:
- 估算你的实例需要消耗多少内存。
- 确保TaskTracker?启动你的实例时,JVM内存的限制要大于等于你预计的内存需求。
- 记住,启动这些JVM是有默认设置的,除非你显式的重写过这些设置。在CPU核心数和物理内存已经平衡并运行服务的节点上,默认设置并不适用。
- 不要迫使节点大量的使用交换空间或者频繁的将内存分页读写到磁盘上。
- 将实例slot数量设置为小于JobTracker web GUI计算值。

原文链接: mapr 翻译: ImportNew.com - 光光头去打酱油
译文链接: http://www.importnew.com/14049.html
[ 转载请保留原文出处、译者和译文链接。]
android eclipse无法执行dex java堆空间错误
每当我构建Android应用程序时,我就对日食上的Java堆空间错误感到非常厌倦.
我将9个库添加到我的android应用程序. (右键单击项目名称->属性-> Android->添加库).
在一些论坛中,我发现有人要求在eclipse.ini文件中进行更改,有人说要添加用户库并向其中添加jar.并将用户库添加到我的应用程序.
我在eclipse.ini中将MaxPermSize更改为1024.它没有帮助
当我向应用程序添加用户库时,我的应用程序无法识别app_compat_v7.jar.它在我使用Theme.Appcompat.Light的样式文件上引发错误
我可以知道我要去哪里了吗?任何帮助将不胜感激.
解决方法:
请尝试以下操作:
Right click your project. Go to Properties -> Java Build Path -> Order and Export.
和
Uncheck the check Box against your included library. Press OK and run the project.
这样做时,Eclipse将仅从jar中获取代码中所需的类,而不是从jar中存储所有类.
还请参见this question.
第二技术
修改eclipse.ini中的-xmsAm和-XmxBm参数,使其足够大.缺省值为-xms40m -Xmx384m.尝试将它们都更改为-xms512m -Xmx512m并重新启动eclipse以查看是否有帮助.如果不是,请继续增加值并重新启动Eclipse,直到发生以下两种情况之一:
>您的构建完成.
> Eclipse不会重新启动,因为您没有足够的内存.
eclipse.ini位于Ubuntu的/etc/eclipse.ini中(假设您是从Ubuntu存储库安装的Eclipse).
对于MAC,请参阅:
查找eclipse.ini有点棘手.要找到它,请右键单击Eclipse Application图标,然后选择“显示软件包内容”,然后双击“ Contents”文件夹,然后双击eclipse.ini所在的“ MacOS”文件夹
android java堆空间
当我包含超过5个罐子时,由于堆内存,eclipse会在编译时出现问题.
An internal error occurred during: "Activity Monitor Job".
Java heap space
Unable to execute dex : java heap space
我的电脑有2GB内存,eclipse.ini如下
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-showsplash
org.eclipse.platform
-vm
C:/Program Files/Java/jdk1.7.0/bin/javaw.exe
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-xms256m
-Xmx700m
我试图在eclipse构建路径设置上将jar放在Library上.但它给了我VerifyError.
我需要增加ram内存吗?
解决方法:
您可以尝试通过将-Xmx700m的值更改为更大的值来增加eclipse允许的最大堆空间. Eclipse ini中的此设置目前将JVM限制为700MB.我不确定要分配多少金额.但是,通过反复试验,您应该能够找到适合您的号码.
android SDK包引用了java SDK哪些包
Android 虽然使用Java语言作为开发工具,但是在实际开发中发现,还是与Java SDK有一些不同的地方。Android SDK引用了大部分的Java SDK,少数部分被Android SDK抛弃,比如说界面部分和jsp用到的HTTPServlet,java.awt package除了java.awt.font被引用外,其他都被抛弃,在Android平台开发中不能使用。将Java 游戏移植到Android平台的过程中,Android SDK与Java SDK的区别是很需要注意的地方。现将Android SDK中引用自Java SDK的package列举如下,并简要说明这些Java包的功能:
包 描述
java.awt.font 提供与字体相关的类和接口。
java.beans 包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。
java.io 通过数据流、序列化和文件系统提供系统输入和输出。
java.lang 提供利用 Java 编程语言进行程序设计的基础类。
java.math 提供用于执行任意精度整数算法 (BigInteger) 和任意精度小数算法 (BigDecimal) 的类。
java.net 为实现网络应用程序提供类。
java.nio 定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。
java.security 为安全框架提供类和接口。
java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。
java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。
java.util 包含集合框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。
Java扩展包
javax.crypto 为 cryptographic(加密)操作提供类和接口。
javax.microedition.khronos.egl
javax.microedition.khronos.opengles
Java Binding for the OpenGL ES(R) API
javax.net 提供用于网络应用程序的类。
javax.security.auth 此包提供用于进行身份验证和授权的框架。
javax.security.auth.callback 此包提供与应用程序进行交互所必需的类,以便检索信息(例如,包括用户名和密码的身份验证数据)或显示信息(例如,错误和警告消息)。
javax.security.auth.login 此包提供可插入的身份验证框架。
javax.security.auth.x500 此包包含应该用来在 Subject 中存储 X500 Principal 和 X500 Private Crendentials 的类。
javax.security.cert 为公钥证书类。
javax.sql 为通过 JavaTM 编程语言进行服务器端数据源访问和处理提供 API。
javax.xml 根据 XML 规范定义核心 XML 常量和功能。
Android SDK引用了Java SDK 80%的package,这些package也是在实际开发中经常使用的,如果需要了解数据包的详细信息,请点击各个包的链接。
以下展示了Android SDK 中一些与网络有关的package。
Android SDK 网络包
包 描述
java.net 提供与联网有关的类,包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。该包是一个多功能网络资源。有经验的 Java 开发人员可以立即使用这个熟悉的包创建应用程序。
java.io 虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他 Java 包中提供的 socket 和连接使用。它们还用于与本地文件(在与网络进行交互时会经常出现)的交互。
java.nio 包含表示特定数据类型的缓冲区的类。适合用于两个基于 Java 语言的端点之间的通信。
org.apache.* 表示许多为 HTTP 通信提供精确控制和功能的包。可以将 Apache 视为流行的开源 Web 服务器。
android.net 除核心 java.net.* 类以外,包含额外的网络访问 socket。该包包括 URI 类,后者频繁用于 Android 应用程序开发,而不仅仅是传统的联网方面。
android.net.http 包含处理 SSL 证书的类。
android.net.wifi 包含在 Android 平台上管理有关 WiFi(802.11 无线 Ethernet)所有方面的类。并不是所有设备都配备了 WiFi 功能,特别是 Android 在 Motorola 和 LG 等手机制造商的 “翻盖手机” 领域获得了成功。
android.telephony.gsm 包含用于管理和发送 SMS(文本)消息的类。一段时间后,可能会引入额外的包来来为非 GSM 网络提供类似的功能,比如 CDMA 或 android.telephony.cdma 等网络。
关于与Android SDK一起蚀,错误:Java堆空间和android sdk 和java sdk的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于5步避免Java堆空间错误、android eclipse无法执行dex java堆空间错误、android java堆空间、android SDK包引用了java SDK哪些包的相关知识,请在本站寻找。
本文标签: