小编Fla*_*gan的帖子

避免Scala内存泄漏 - Scala构造函数

我正在阅读"Scala编程"一书,并Rational在第6章的实现中遇到了一些问题.

这是我Rational班级的初始版本(基于本书)

class Rational(numerator: Int, denominator: Int) {
  require(denominator != 0)

  private val g = gcd(numerator.abs, denominator.abs)

  val numer = numerator / g
  val denom = denominator / g

  override def toString  = numer + "/" + denom

  private def gcd(a: Int, b: Int): Int =
    if(b == 0) a else gcd(b, a % b)

  // other methods go here, neither access g
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是,字段g在类的生命周期内保持不变,即使从未再次访问过.运行以下模拟程序可以看到此问题:

object Test extends Application {

  val a = new Rational(1, 2) …
Run Code Online (Sandbox Code Playgroud)

memory-leaks scala

9
推荐指数
4
解决办法
4692
查看次数

标签 统计

memory-leaks ×1

scala ×1