我有一个非常基本的游戏!应用程序只是处理一些正常的GET和POST请求并与MySQL数据库进行对话,没什么特别的。
我运行play dist
并将zip文件传输到我的EC2实例。解压缩后,转到bin
文件夹并运行./myapp
,我收到一条消息:
Java HotSpot(TM) 64-Bit Server VM warning: Info: os::commit_memory ... error='Cannot allocate memory' (errorno=12)
There is insufficient memory for the Java Runtime Environment to continue.
我正在运行Play版本2.2.1,这个实例有大约512MB的ram,以及64位版本的Oracle JDK。这还不足以进行比赛! app或我错过了什么?
感谢。
答案 0 :(得分:14)
Play Framework 2.3现在有一个漂亮的小功能。
$ /path/to/bin/<project-name> -mem 512 -J-server
Shoule完成工作。
阅读http://www.playframework.com/documentation/2.3-SNAPSHOT/ProductionConfiguration
指定其他JVM参数 您可以为启动脚本指定任何JVM参数。否则,将使用默认的JVM设置:
$ / path / to / bin / -J-Xms128M -J-Xmx512m -J-server 为方便起见,您还可以一次性设置内存min,max,permgen和保留代码缓存大小;一个公式用于 给定提供的参数(代表最大内存)确定这些值:
$ / path / to / bin / -mem 512 -J-server
答案 1 :(得分:3)
使用播放2.2.1 我必须运行play dist
来生成zip文件。然后我将其复制到aws实例。
在那里,我解压缩了zip并更改了可执行文件:
从:
local mem=${1:-1024}
为:
local mem=${1:-512}
那为我做了。我从here得到了这个想法,但我不想删除他们在那里的逻辑,所以我只是减少了默认值。
另请注意,关于aws ec2 micro:
$ java -version
java version "1.6.0_24"
OpenJDK Runtime Environment (IcedTea6 1.11.14) (amazon-65.1.11.14.57.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
因此,在运行play dist
时必须使用相同的Java JDK。
编辑:
我将java更新为 openjdk 7 ,并且能够毫无错误地运行示例播放应用程序。