布局 xml 上的 Java 堆空间错误:超出 GC 开销限制
Posted
技术标签:
【中文标题】布局 xml 上的 Java 堆空间错误:超出 GC 开销限制【英文标题】:Java Heap Space error on Layout xml: GC overhead limit exceeded 【发布时间】:2015-08-22 23:16:43 【问题描述】:当我在 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 --launcher.XXMaxPermSize 1024米 --launcher.defaultAction 打开文件 --launcher.appendVmargs -vmargs -Dosgi.requiredJavaVersion=1.7 -XX:MaxPermSize=1024m -Xms512m -Xmx2048m
【问题讨论】:
wiki.eclipse.org/… 【参考方案1】:这种错误通常是由于图像尺寸过大引起的。您是否尝试将android:largeHeap="true"
放入您的AndroidManifest.xml
文件中?试试这个,如果你还没有,你很可能会解决这个问题。
【讨论】:
【参考方案2】:只需重新启动 IDE 并停止其他应用程序。 这是经验,我经历了几次。
【讨论】:
以上是关于布局 xml 上的 Java 堆空间错误:超出 GC 开销限制的主要内容,如果未能解决你的问题,请参考以下文章
优化 Hive 查询。 java.lang.OutOfMemoryError:超出 Java 堆空间/GC 开销限制