2016-12-13 5 views
0

だから私はとSBTの内側にプレイしてメモリ設定を設定することで苦労してきた:Play Framework 2.5がsbtのJVMメモリ設定を尊重しないのはなぜですか?

javaOptions ++= Seq("-Xmx11G", "-Xms3G") 

しかし、それはそれを尊重していないように思えます。

は、私はそれを印刷するとき

ここ
val mb = 1024*1024 

//Getting the runtime reference from system 
val runtime = Runtime.getRuntime 

println("##### Heap utilization statistics [MB] #####") 

//Print used memory 
println("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory())/mb) 

//Print free memory 
println("Free Memory:" + runtime.freeMemory()/mb) 

//Print total available memory 
println("Total Memory:" + runtime.totalMemory()/mb) 

//Print Maximum available memory 
println("Max Memory:" + runtime.maxMemory()/mb) 

は、私が見たものである:私は_JAVA_OPTIONSを設定することにより、提案hereを試してみましたが、これで問題は、それは次のように私を与える、ということである

##### Heap utilization statistics [MB] ##### 
Used Memory:270 
Free Memory:657 
Total Memory:928 
Max Memory:928 

エラー:

No java installations was detected. 
Please go to http://www.java.com/getjava/ and download 

どのようなアイデアをお持ちですか?

+0

'fork in run:= true'を試してください。[here](http://www.scala-sbt.org/0.13/docs/Forking.html)を参照してください。 –

+0

私は 'fork in run:= true'を持っています。これは' fork:= true'を包含していると思いますか? – Daniel

+0

これは、システムとJVM(どちらも32ビット、64ビット)に依存します。 32ビットJVMでは、それほど多くのメモリを割り当てることはできません(私は思います)。それは、JVM Xmxに関する私の知識が終わるところです。xD –

答えて

1

forktrueに設定されています)Playアプリケーションの起動スクリプトをプロダクションモードで使用している場合は、recommended wayがコマンドライン引数としてスクリプトに渡されます。それ以外の場合は、デフォルトのJVM設定が使用されます。ここでは、sbt runまたはactivator runを使用してdevモードで作業しているので、同じことを効果的に行う必要があります。あなたは、コマンドラインの引数を渡すことができ

ソリューション1

$ sbt run -J-Xms3G -J-Xmx11G 

解決方法2:

sbt 0.13.6を開始し、あなたは.sbtoptsファイルを追加することができますプロジェクトのルートディレクトリにJVMフラグを設定します。プロジェクトを自立させるため、これはおそらくより良い方法です。ここで

はサンプル.sbtoptsです:

-J-Xms3G 
-J-Xmx11G 

ここ$ sbt run(またはactivator run)の出力があります:

##### Heap utilization statistics [MB] ##### 
Used Memory: 364 
Free Memory: 4062 
Total Memory: 4426 
Max Memory: 10012 

あなたはオプションと使用法hereについての詳細を読むことができます。

注:これはPlayではなくSBTプロジェクトの場合、はbuild.sbtで定義されています。

関連する問題