Play Framework-无法为对象堆保留足够的空间 - java

我对我的游戏项目进行了一些修改,当我尝试运行它时,我得到了错误。

>play run
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occured. Program will exit.

这是个常见的问题吗?我对play框架没有足够的经验,但是在没有遇到此错误之前,我已经运行了几次项目。

编辑:有关Java版本的信息。

>java -version
java version "1.7.0_11"
Java(TM) Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) Client VM (build 23.6-b04, mixed mode, sharing)

参考方案

在Play框架2.0.3的<play framework install dir>\framework\build.bat脚本中,您需要为以下命令替换命令行参数

java -Xms512M -Xmx1024M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M %DEBUG_PARAM% -Dfile.encoding=UTF8 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="file:///%p%sbt/sbt.boot.properties" -jar "%~dp0sbt\sbt-launch.jar" %*

进入

java -XX:+CMSClassUnloadingEnabled %DEBUG_PARAM% -Dfile.encoding=UTF8 -Dplay.version="%PLAY_VERSION%" -Dsbt.ivy.home="%~dp0..\repository" -Dplay.home="%~dp0." -Dsbt.boot.properties="file:///%p%sbt/sbt.boot.properties" -jar "%~dp0sbt\sbt-launch.jar" %*

它解决了我的问题。

有关更多信息,请参考this post。

Play Framework 2中的系统类加载器 - java

我使用的是Play 2.2.2,我有一个外部jar,它试图从同一jar的根目录加载XML资源。它使用System.class.getClassLoader().getResource("/Blabla.xml")这样做。这失败了,因为显然Play拥有一个奇怪的类加载器层次结构:ReloadableClassLoader和几个父级。该层次结…

如何从非活动类中检索上下文? - java

我发现one answer似乎表明我应该创建一个单独的类并创建一个静态MyApplication对象并创建一个get方法。然后,任何类都可以调用MyApplication.get()来检索上下文。还有其他更清洁的方法吗?这是我的情况:我有一个类A和一个类B。类A包含一个来自类B的对象(我们称为对象b)。在A类中,我称之为“b.play()”。但是,我得到一个…

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

包括Java in Play! Scala源代码树杀死编译 - java

我正在使用Play!与Scala一起使用,并在源代码树中包括几个Java类。一切正常,直到我开始在树中直接包含源类。看来,每当我尝试使用app / com / class / class.java之类的文件夹编译应用程序时(仔细检查导入的结构是否正确),该应用程序都不会编译。它将在提示中启动,并进入“ API phase was ...”并挂起。我改编了一个…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …