def append(msg: Msg, session: OutputChannel[Any]) {
changeSize(1) // size always increases by 1
val el = new MQueueElement(msg, session)
if (isEmpty) first = el
else last.next = el
last = el
}
метод добавления MQueue (очередь сообщений субъекта) не имеет максимального размера.Разве это не вызывает outOfMemory?
И посмотрите на changeSize (1)
private var _size = 0
def size = _size
final def isEmpty = last eq null
protected def changeSize(diff: Int) {
_size += diff
}
, почему нет @volatile с private var _size?Что делать, если время добавления превышает Int.maxValue?мы просто ожидаем, что они никогда не произойдут?