浅谈Could not create the Java Virtual Machine.
错误如下:
1 |
|
叙述:
这个问题的发生是在我把springBoot项目改造为dubbo项目时发生。当时改造完后再测试环境用脚本启动是正常的,但是在生产环境就发生了如上问题的导致项目无法运行。
脚本如下:
当时出现这个问题第一反应就是启动脚本出现了问题:直接看了Error的错误语句然后去百度,走了很多弯路。
弯路:以为是jdk版本的问题、可能是服务器空间不足,又认为可能是脚本中存在大小写或者中文格式的问题。
排查了一段时间发现都不是。后来仔细看了下错误提示,第一句才是关键:Conflicting collector combinations in option list; please refer to the release notes for the combinations allowed
这里很明显提示了你:列表收集器组合有问题(这个问题深深的告知了我遇到问题一定要仔细看错误日志、一定要仔细)。
所以问题最后的处理就是去掉图中标明地方的:-XX:+UseG1GC
重点
这个脚本在测试环境是可以正常运行的,但是在生产环境就必须去掉-XX:UseG1GC才能运行。不然就会提示上面的错误。
后来百度搜索了一番有资料说明是java自身中这个UseG1GC确实存在bug。有时候正常有时候就会有问题(这个我也不知道真假)。
java官方地址:
https://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html