首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby gtk-3的内存泄漏

ruby gtk-3的内存泄漏
EN

Stack Overflow用户
提问于 2017-04-06 14:39:13
回答 2查看 123关注 0票数 0

我在使用gtk-3的ruby 2.3.1上遇到了内存泄漏。在我的系统(Ubuntu16-04)上,下面的代码消耗大约80 MB。picture.jpg的大小为289 is。

“要求'gtk3‘

代码语言:javascript
复制
  def ptest
    i=0
    j=0
    loop {
    i += 1
    j += 1
    exit if j==50
    @image = Gtk::Image.new
    newPixbuf = GdkPixbuf::Pixbuf.new(:file => "picture.jpg")
    @image.pixbuf = newPixbuf
    @image.clear
    @image=nil
    if i == 10
      p "GC"
      GC.start
      i = 0
    end
    }
  end

  ptest`

根据https://sourceforge.net/p/ruby-gnome2/mailman/message/8659687/的说法,这种情况不应该发生。我能做些什么来释放记忆?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-08 14:35:15

显然,我的Rubygdk3-Gem中有一个bug。gem更新解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2017-04-07 01:55:04

我不喜欢Ruby,但我知道一些Gtk+。在C中,您必须自己处理内存分配,您需要解压像素。

来自GtkImage文档

GtkImage不假定对像素的引用;如果您拥有引用,仍然需要取消它。

因此,最有可能的是,如果Ruby不实现ARC (GObjects上的自动引用计数),那么您必须在@image.pixbuf = newPixbuf之后立即执行类似newPixbuf.unref (不确定Ruby语法)的操作。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43258357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档