2015-01-20 3 views
0

나는 텍스트 배열과 이미지 배열을 취한 다음 "트위터"로 교차 제품을 계산하는 "스크램블러"를 만들고 있습니다. 나는이 같은 외모에 대한 걱정 기능 :계산 된 속성에서 모델을 생성하면 메모리가 누출됩니까?

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('[email protected]','[email protected]') 

내 걱정은 내가 모델을 많이 만드는거야 내가 정말 엠버의 가비지 수집을 이해하지 못하는 것입니다.

여기에 메모리 누수가 발생할 위험이 있습니까?

감사합니다.

답변

1

Ember는 가비지 수집을 구현하지 않습니다. DOM과 관련된 몇 가지 사례에서 항목에 대한 참조가 제거되어 가비지 수집되었는지 확인합니다.

Ember는 Foo.create()를 사용하여 만든 개체에 대한 전역 참조를 만들지 않습니다. 그래서 더 이상 객체에 대한 참조가없는 순간 브라우저가 수집 할 기분에 있다고 판단하면 수집됩니다.

계산 된 속성을 만드는 것은 모든 개체에서 속성을 만드는 것과 유사합니다. 개체가 더 이상 참조되지 않는 순간 컬렉션이 표시되고 속성이 따라옵니다.