当前位置: 首页 > 知识库问答 >
问题:

Layout xml上的Java堆空间错误:超过GC开销限制

宰父霖
2023-03-14

当我在android中使用任何布局xml时,我都在与Java堆空间错误作斗争

我在SO上搜索,但错误仍然存在。我的错误日志

java.lang.OutOfMemoryError: GC overhead limit exceeded
    at java.util.Arrays.copyOf(Arrays.java:2367)
    at java.lang.String.<init>(String.java:168)
    at org.eclipse.wst.xml.core.internal.document.AttrImpl.getName(AttrImpl.java:158)
    at org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceAttributeVisitor.visitElement(NamespaceAttributeVisitor.java:73)
    at org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceTable.addElement(NamespaceTable.java:216)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.getCMElementDeclaration(XMLAssociationProvider.java:334)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.getCMElementDeclaration(XMLAssociationProvider.java:223)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ModelQueryImpl.getCMElementDeclaration(ModelQueryImpl.java:116)
    at org.eclipse.wst.xml.core.internal.document.DocumentImpl.getCMAttributes(DocumentImpl.java:1077)
    at org.eclipse.wst.xml.core.internal.document.ElementImpl.getDefaultValue(ElementImpl.java:378)
    at org.eclipse.wst.xml.core.internal.document.ElementImpl.getAttributeNS(ElementImpl.java:336)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutMetadata.getProperty(LayoutMetadata.java:152)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutMetadata.getNodeBinding(LayoutMetadata.java:332)
    at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.getAdapterBinding(ProjectCallback.java:612)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1237)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.postInflateProcess(RenderSessionImpl.java:1296)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:411)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:349)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:519)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1584)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1309)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.reloadLayoutSwt(GraphicalEditorPart.java:1817)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener.access$0(GraphicalEditorPart.java:1755)
    at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart$ReloadListener$1.run(GraphicalEditorPart.java:1749)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136)


    eclipse conf properties

org.eclipse.platform - launcherXXMaxPermSize 1024m-launcher . default action openFile-launcher . appendvmargs-VM args-dosgi . requiredjavaversion = 1.7-XX:MaxPermSize = 1024m-xms 512m-xmx 2048m

共有2个答案

谷梁建中
2023-03-14

只需重新启动IDE并停止其他应用程序。这是我的经验,我经历了好几次。

郜振国
2023-03-14

这种错误通常是由于图像大小过大而导致的。您是否尝试过将android:largeHeap=“true”放入您的AndroidManifest中。xml文件?如果你还没有这样做,那么尝试一下,你很可能会解决这个问题。

 类似资料:
  • 什么是java。lang.OutOfMemoryError:Java堆空间意味着消息意味着应用程序只需要比正常运行可用的更多Java堆空间。 什么是java。lang.OutOfMemoryError:超出GC开销限制意味着由于某种原因,垃圾收集器占用了过多的时间(默认情况下占进程所有CPU时间的98%),每次运行时恢复的内存很少(默认情况下占堆的2%)。这在内部也意味着,当应用程序只需要比正常运

  • 我正在做一个Java项目。我从服务器检索pdf并将其转换为图像以将像素与预期文件进行比较。当我只使用20-30个文件运行该程序时,它很好,但当我尝试使用超过30个文件时,它会抛出OutOfMemoryError。 看起来像pdf- 下面是Java堆空间日志的一部分: 以下是GC开销限制超出的日志部分: 此外,第一个Java堆空间错误发生在id22,第二个发生在id33。我在服务器上使用8GB RA

  • 当我执行我的测试时,我得到了这个错误消息: 我知道什么是,但GC开销限制意味着什么?我怎样才能解决这个问题?

  • 问题内容: 我执行JUnit测试时收到以下错误消息: 我知道是什么OutOfMemoryError,但是GC开销限制是什么意思?我该如何解决? 问题答案: 该消息表示由于某种原因,垃圾收集器占用了过多的时间(默认情况下为该进程所有CPU时间的98%),并且每次运行时恢复的内存很少(默认为堆的2%)。 这实际上意味着你的程序停止任何进展,并且一直在忙于仅运行垃圾回收。 为了防止你的应用程序浪费CPU

  • 我使用Jmeter将工作负载注入部署在AWS EC2实例上的应用程序。测试必须非常庞大:它持续10个小时,工作负载配置文件具有双峰形状,在5分钟内大约有2600个请求。实际上我有一个m3。部署应用程序的xlarge实例,8 m3。xlarge实例每个实例运行一个jmeter实例。使用python脚本,要注入的工作负载在8个客户机实例之间进行分割,因此在示例中,如果原始工作负载要注入800个请求,那

  • 在Android Studio1.5.1只是通过移动源代码从一个系统到另一个即使干净的构建是成功的,但当代码运行我得到这种错误 java.lang.OutOfMemoryError: GC开销限制超过错误:任务': app: dexDebug'执行失败。 我在应用程序中添加了以下代码。格拉德尔还: