bwb*_*ker 8 performance scala sbt playframework
在我看来,SBT只是在观察文件更改时占用了过多的CPU时间.我知道这篇文章,但作者认为IDE CPU时间与SBT cpu时间相混淆; 我没有运行IDE.
我正在Scala中开发一个Play项目,大约有370个scala文件,分为5个模块.
使用~run运行sbt会占用我的MacBook Pro上大约70-90%的CPU(2012年中).我没有运行IDE,我没有编辑任何文件,没有浏览器访问服务器......根据Activity Monitor,只需使用〜运行(并观察文件系统)占用70-90%的CPU.
看着它闲置了一段时间后我启动了VisualVM; 它显示了自己和另一个JVM进程:
有关xsbt进程的详细信息(每个VisualVM):
PID: 56661
Host: localhost
Main class: xsbt.boot.Boot
Arguments: -Dhttp.port=9001 -Dhttps.port=9443 -Djsse.enableSNIExtension=false -Dhazelcast.config=conf/hazelcast-dev.xml -Dlogger.file=conf/logback-dev.xml -Dconfig.file=conf/passwords/local-dev.conf
JVM: Java HotSpot(TM) 64-Bit Server VM (25.121-b13, mixed mode)
Java: version 1.8.0_121, vendor Oracle Corporation
Java Home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
JVM Flags: <none>
Heap dump on OOME: disabled
Run Code Online (Sandbox Code Playgroud)
JVM参数:
-Xms1024m
-Xmx1024m
-XX:ReservedCodeCacheSize=128m
-XX:MaxMetaspaceSize=256m
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Run Code Online (Sandbox Code Playgroud)
以下是VisualVM中有关时间的详细信息:
80%的CPU使用率 - 以及大多数时间都在运行的风扇 - 合理而sbt是空闲的吗?看起来真的很高.任何降低战略的策略?
PS:当sbt刚出现在命令提示符下时(不看文件更改),Activity Monitor显示大约5%的CPU使用率.
PPS:我通常concurrentRestrictions in Global += Tags.limit(Tags.Test, 4)在我的构建文件中防止在测试期间有太多并发数据库连接.我不确定这实际上是否符合我的想法.上面的统计数据是用该行注释掉的.当我恢复它时,活动监视器仍然报告~80%的CPU使用率,但在CPU样本中idleAwaitWork根本没有出现并且在它后面ConcurrentRestrictions$$anon$4.take占据首位SourceModificationWatch$.watch.
假设您正在使用 sbt 1,这可能是由于Waldemar Wosi\xc5\x84ski 在评论中指出的https://github.com/sbt/sbt/issues/3860造成的。
\n\n由于我们已经采用了 Close Watch,所以问题现在应该得到解决。请尝试 sbt 1.1.6 或更高版本,看看问题是否仍然存在。
\n