gpt4 book ai didi

ruby - 此代码是否在 Ruby 中创建循环内存引用?

转载 作者:数据小太阳 更新时间:2023-10-29 08:05:45 27 4
gpt4 key购买 nike

我有以下假设代码:

class User < ActiveRecord::Base
def oauth_consumer
@oauth_consumer ||= OauthConsumer.new(self)
end
end

class OauthConsumer
attr_reader :user, :access_token

def initialize(user)
@user = user
@access_token = OAuth::AccessToken.new(@user.token, @user.secret)
end

def get_posts_in_thread(thread_id)
response = access_token.get("/thread/#{thread_id}/user/#{user.id}")
JSON.parse(response.body)
end
end

user = User.new(:token => 'token', :secret => 'secret')

# I want to get the user's posts in thread #12345.
user.oauth_consumer.get_posts_in_thread(12345)

我想知道这是否会创建一个循环内存引用,其中 user 引用了 oauth_consumer,而 oauth_consumer 有对 user 的引用,从而使其无法被垃圾收集?

或者底层 GC 实现(REE 1.8.7)是否处理​​这种情况?

最佳答案

以下讨论表明 Ruby 的 GC 方法(标记和清除)处理循环引用:

http://www.ruby-forum.com/topic/85717

关于ruby - 此代码是否在 Ruby 中创建循环内存引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8003808/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com