【发布时间】:2014-08-13 22:09:03
【问题描述】:
我试图找出两者之间的区别,因为我的 Eclipse 有时会遇到“内存不足”错误。我有很多内存可供使用,所以我试图找出增加或减少哪些内存以及他们如何让它正常工作。以下是文件内容:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20130807-1835
-clean
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Xms256m
-Xmx2000m
【问题讨论】:
-
永久空间和堆空间
-
什么是 permgen(以及它与 eclipse 有何关系)以及它与堆有何不同?
-
我相信 Permgen 堆已在 Java 8 中被删除。我认为它的选项现在已被弃用或被删除。 Permgen 堆是 JVM 决定存储所有它虽然是永久的,主要是类定义的地方。这导致了动态加载/卸载类的问题,因为它从来没有被清扫为垃圾。
-
好吧,假设我有一个非常大的项目,我应该更担心 MaxPermSize 而不是堆,因为它必须存储与项目的每个类关联的所有数据?
-
permgen 空间通常只包含类的定义和一些通常不会超出范围的其他元数据。它不存储用 new 分配的对象。大多数情况下,您不必担心 permgen 空间不足,除非您计划在运行时“重新加载”类。
标签: java eclipse memory jvm jvm-arguments