相关疑难解决方法(0)

在JVM上启用了逃逸分析的经验

我刚刚尝试在jdk6-u18 VM上-XX:+DoEscapeAnalysis启用该选项(在solaris上)并且有一个相当令人失望的经历.我正在运行一个scala应用程序,它有很多演员(其中20,000个).这是垃圾创建的秘诀!

通常,应用程序可以用堆为256MB运行,但产生巨大的垃圾量.在稳定状态下:

  • 在GC中花费10%的时间
  • 在<30秒内生成> 150Mb的垃圾然后获得GC

我认为转义分析可能会有所帮助,所以我启用了该选项并重新运行了应用程序.我发现应用程序变得越来越无法清除它收集的垃圾,直到它似乎最终花费了整个时间来做GC并且应用程序在其完全分配时"扁平化".

在这一点上,我应该说该应用程序没有抛出OutOfMemoryError我所期望的.也许JConsole(我用来执行分析)没有正确显示带有此选项的GC统计数据(我不相信)?

然后我删除了该选项并重新启动,应用程序再次变为"正常"!任何人都知道可能会发生什么?

java jvm scala escape-analysis

7
推荐指数
2
解决办法
2078
查看次数

Scala 2.11中的类型化基元

正如我所见,原始类型喜欢StringLong不能被扩展,因为它们被定义为final.但这对于类型安全的方法来说是一种遗憾.在围绕例如字符串操作的代码中,我更喜欢键入我的数据而不是使用String,Long,Int等:只要我使用类型安全的语言,我就希望我的代码真的可以输入从头开始.

根据实验和非常古老的问题类型证明,别名似乎不利于此.目前,我将使用以下内容:

case class DomainType(value: String)
Run Code Online (Sandbox Code Playgroud)

代价是必须使用.value需要价值的地方.

在scala 2.8之后是否还引入了其他语言功能,它可以巧妙地促进类型安全的子类型原语?是否存在代理基础值的任何对象覆盖,但仍然会发生类型匹配?

scala

3
推荐指数
1
解决办法
167
查看次数

标签 统计

scala ×2

escape-analysis ×1

java ×1

jvm ×1