如果我在计算 属性 中创建模型, ember 会泄漏内存吗?

Will ember leak memory if I create a Model in a computed property?

我正在创建一个 "scrambler",它接受一个文本数组和一个图像数组,然后将叉积计算为推文。我担心的函数如下所示:

combinations: (->
  tweet_texts  = @get('tweet_texts')
  tweet_images = @get('tweet_images')

  # return empty array unless we have texts
  return Em.A([]) unless tweet_texts.length

  # handle the case when we don't have images
  unless tweet_images.length
    combinations  = tweet_texts.map (text) =>
      TwitterPost.create
        text : text
        newtwork_user : @get('account.twitter_handle')
    return Em.A(combinations)

  # handle texts and images
  combinations = tweet_images.map (image) =>
    tweet_texts.map (text) =>
      TwitterPost.create
        text  : text
        image : image
        network_user : @get('account.twitter_handle')
  return Em.A([].concat(combinations...))
).property('tweet_texts.@each','tweet_images.@each')

我担心的是我创建了很多模型,但我并不真正了解 Ember 的垃圾收集。

那么,我这里是否存在内存泄漏的风险?

谢谢!

Ember 不执行任何类型的垃圾收集。在一些涉及 DOM 的实例中,它确实删除了它对项目的引用以确保它被垃圾收集。

Ember 不会创建对使用 Foo.create() 创建的对象的任何类型的全局引用。因此,当不再有对该对象的引用并且您的浏览器决定它有心情收集时,它将被收集。

将其设为计算 属性 类似于将其设为任何对象的 属性。一旦对象不再被引用,它就会被标记为收集,属性也会随之而来。