Fail to create Java Virtual Machine 解决方案

本文介绍了一种解决Eclipse启动失败的方法,通过调整eclipse.ini配置文件中的内存参数,将launcher.XXMaxPermSize从256M改为128M,成功解决了启动时出现的“Fail to create Java Virtual Machine”错误。

问题描述

      启动eclipse时居然就启不起来了,提示Fail to create Java Virtual Machine这个错误。



       


解决方案:

找到eclipse安装目录下的eclipse.ini配置文件, 把 launcher.XXMaxPermSize 的256M改成128M,改完之后如下


-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.300.v20150602-1417
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms256m
-Xmx1024m



重启Eclipse 就正常了。





### Java 中的 CCS 区(Compressed Class Space) 在 Java 的内存管理中,CCS(Compressed Class Space)是一个与类元数据相关的内存区域,主要用于存储使用压缩指针表示的类信息。它是在 Java 8 中引入的,与 Metaspace 机制一同取代了传统的永久代(PermGen)[^1]。 CCS 区的引入是为了优化类元数据的存储效率,尤其是在 64 位 JVM 上运行时。由于 64 位 JVM 使用 64 位指针,指针的存储开销较大,因此通过压缩指针(CompressedOops)技术减少内存占用。然而,类元数据(如类的结构、方法、字段等)也需要相应的优化,CCS 区正是用于存储这些压缩后的类元数据[^1]。 在使用 `jstat -gc` 命令查看 JVM 的内存使用情况时,CCS 区通常以 `CCSC` 字段显示。该区域的垃圾回收(GC)行为与 Metaspace 类似,通常在元空间进行 GC 时一并处理。CCS 区的大小可以通过 JVM 参数 `-XX:CompressedClassSpaceSize` 进行配置,默认情况下为 1GB[^1]。 ### CCS 区与 Metaspace 的关系 在 Java 8 及更高版本中,类的元数据不再存储在 PermGen 中,而是分配在 Metaspace 和 CCS 区中。Metaspace 主要用于存储类的元数据信息,而 CCS 区则专门用于存储压缩的类指针数据。这种分离的设计有助于更高效地管理类元数据,并减少内存碎片问题。 ### CCS 区的常见问题 在某些情况下,CCS 区可能会导致内存分配失败或 JVM 启动失败。例如,在使用某些开发工具(如 CCS6.1.2 或 CCS6.2)时,可能会出现 "Fail to create Java Virtual Machine" 或 "Failed to create Java machine" 的错误。这类问题通常与 JVM 的内存参数配置有关,尤其是 `-Xmx`(最大堆内存)和 `-XX:CompressedClassSpaceSize`(CCS 区大小)之间的关系。调整这些参数可以解决内存分配问题[^4]。 例如,可以尝试减少 `-XX:CompressedClassSpaceSize` 的值,或者调整 `-Xmx` 参数,确保 JVM 有足够的内存空间来分配 CCS 区和其他内存区域。 ### 示例:查看 CCS 区状态 可以通过 `jstat -gc` 命令查看 CCS 区的 GC 状态: ```bash jstat -gc <pid> ``` 输出中包含的 `CCSC` 字段表示 CCS 区的当前大小,`CCSU` 表示已使用的大小。这些信息有助于分析 CCS 区的内存使用情况和 GC 行为。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值