[#7286] Re: ruby-dev summary 28206-28273 — ara.t.howard@...

On Thu, 2 Feb 2006, Minero Aoki wrote:

23 messages 2006/02/02
[#7292] ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — mathew <meta@...> 2006/02/02

[#7293] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — mathew <meta@...> 2006/02/02

mathew wrote:

[#7298] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — James Britt <ruby@...> 2006/02/03

mathew wrote:

[#7310] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — Evan Webb <evanwebb@...> 2006/02/07

I'm not sure we even need the 'with' syntax. Even if we do, it breaks

[#7311] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — Eero Saynatkari <ruby-ml@...> 2006/02/07

On 2006.02.07 10:03, Evan Webb wrote:

[#7313] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — Evan Webb <evanwebb@...> 2006/02/07

Umm, on what version are you seeing a warning there? I don't and never

[#7315] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — Eero Saynatkari <ruby-ml@...> 2006/02/07

On 2006.02.07 14:47, Evan Webb wrote:

[#7316] Re: ANDCALL / iff? / &? (was Re: ruby-dev summary 28206-28273) — Evan Webb <evanwebb@...> 2006/02/07

I'd by far prefer it never emit a warning. The warning is assumes you

[#7305] Re: Problem with weak references on OS X 10.3 — Mauricio Fernandez <mfp@...>

On Sun, Feb 05, 2006 at 08:33:40PM +0900, Christian Neukirchen wrote:

28 messages 2006/02/05
[#7401] Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Eric Hodel <drbrain@...7.net> 2006/02/22

On Feb 5, 2006, at 5:05 AM, Mauricio Fernandez wrote:

[#7414] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Mauricio Fernandez <mfp@...> 2006/02/23

On Wed, Feb 22, 2006 at 02:21:24PM +0900, Eric Hodel wrote:

[#7428] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Tanaka Akira <akr@...17n.org> 2006/02/26

In article <1140968746.321377.18843.nullmailer@x31.priv.netlab.jp>,

[#7444] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — nobu@... 2006/02/28

Hi,

[#7445] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Tanaka Akira <akr@...17n.org> 2006/02/28

In article <m1FDshr-0006MNC@Knoppix>,

[#7447] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Tanaka Akira <akr@...17n.org> 2006/02/28

In article <87irr047sx.fsf@m17n.org>,

[#7448] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Tanaka Akira <akr@...17n.org> 2006/02/28

In article <87vev0hxu5.fsf@m17n.org>,

[#7465] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — "Evan Webb" <evanwebb@...> 2006/03/01

Just my quick 2 cents...

[#7468] Re: Symbols overlap ordinary objects, especially on OS X (Was: Re: Problem with weak references on OS X 10.3) — Tanaka Akira <akr@...17n.org> 2006/03/01

In article <92f5f81d0602281855g27e78f4eua8bf20e0b8e47b68@mail.gmail.com>,

[#7403] Module#define_method "send hack" fails with Ruby 1.9 — Emiel van de Laar <emiel@...>

Hi List,

12 messages 2006/02/22
[#7404] Re: Module#define_method "send hack" fails with Ruby 1.9 — George Ogata <g_ogata@...> 2006/02/22

Emiel van de Laar <emiel@rednode.nl> writes:

[#7406] Re: Module#define_method "send hack" fails with Ruby 1.9 — dblack@... 2006/02/22

Hi --

[#7442] GC Question — zdennis <zdennis@...>

I have been posting to the ruby-talk mailing list about ruby memory and GC, and I think it's ready

17 messages 2006/02/27

Re: GC Question

From: zdennis <zdennis@...>
Date: 2006-02-28 14:19:11 UTC
List: ruby-core #7456
Attempting to apply patch to array.c from 1.8.4 I get:

   zdennis@lima:~/source/downloads/ruby-1.8.4$ patch array.c array.patch
   patching file array.c
   patch: **** malformed patch at line 18: /* Arrays are ordered, integer-indexed collections of any
   object.

I am sure it is probably me, but perhaps my version of patch is no compatible with your version of 
diff? I am using patch 2.5.9.

Zach


H.Yamamoto wrote:
> Hello.
> 
> 
>>I have been posting to the ruby-talk mailing list about ruby memory and GC, and I think it's ready 
>>for ruby-core mailing list. The thread topic was "Memory Question", www.ruby-lang.org appears to be 
>> down at the moment otherwise I'd post a links to the mailing list archives.
>>
>>Here is the latest post from me, afterwards is some input from H. Yamamoto:
>>
>>Well I did some digging, and I'm left with more questions. The following script does NOT collect the 
>>800,000 strings created (this doesn't use Mysql, Rails or anything else, just ruby core). I ran this 
>>in accordance with a couple other scripts which utilize 150mb+ of memory, to see if the os would 
>>somehow force ruby to do better GC'ing, it didn't and swap was used. On my system this script 
>>consistently used 42Mb of memory, and the string count never went below 800,000. Why would the 
>>strings not get gc'd when they are out of scope ?
> 
> 
> Because ruby's GC is conservative. Python uses reference count based GC, so it is guranteed that unreferenced
> object will be freed at end of scope unless reference loops, but conservative GC is... mostly collectable GC.
> 
> Of cause, conservative GC has advantage over reference count GC. No need to IncRef or DecRef stuff by hand,
> easy to write C extensions. Probably trade-off.
> 
> I tried test1.rb, and I got following result.
> 
> E:\>e:\ruby\bin\ruby a.rb
> 108
> check now
> 853447
> 109
> 110
> 110
> 110
> 110
> 110
> a.rb:23:in `join': Interrupt
>         from a.rb:23
> 
> But when I tried my script attached on this mail, array never be freed.
> Probably on your environment, array occasionally wasn't freed in test1.rb neigher.
> 
> But I think this is not cause of your problem because ... ([ruby-talk:181563])
> 
>    Received query results                   89Mb
>    String count                             901034
>    Threshold breaker String                 (827236) started w/ 73743 ended w/ 900979
>    Threshold breaker Table1                 47000 started w/ 0 ended w/ 47000
> 
>    Starting GC                              89Mb
>    String count                             25041
>    Done with GC                             82Mb
>    Threshold breaker String                 -48704 started w/ 73743 ended w/ 25039
> 
> ,.. String count was down. If this memory problem happened by one big array (`records` in test_build_mem_usage?)
> which was not freed, String count would not be down.
> 
> Can you try similar patch like this?
> 
> Index: array.c
> ===================================================================
> RCS file: /src/ruby/array.c,v
> retrieving revision 1.137.2.30
> diff -u -w -b -p -r1.137.2.30 array.c
> --- array.c	22 Dec 2005 07:08:51 -0000	1.137.2.30
> +++ array.c	28 Feb 2006 04:12:46 -0000
> @@ -2953,6 +2953,16 @@ rb_ary_flatten(ary)
>      return ary;
>  }
>  
> +static VALUE
> +ary_capacity(VALUE ary)
> +{
> +    if (FL_TEST(ary, ELTS_SHARED)) {
> +	return LONG2FIX(0);
> +    }
> +    else {
> +	return LONG2FIX(RARRAY(ary)->aux.shared);
> +    }
> +}
>  
>  /* Arrays are ordered, integer-indexed collections of any object. 
>   * Array indexing starts at 0, as in C or Java.  A negative index is 
> @@ -3050,6 +3060,8 @@ Init_Array()
>      rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, 0);
>      rb_define_method(rb_cArray, "nitems", rb_ary_nitems, 0);
>  
> +    rb_define_method(rb_cArray, "capacity", ary_capacity, 0);
> +
>      id_cmp = rb_intern("<=>");
>      inspect_key = rb_intern("__inspect_key__");
>  }
> Index: string.c
> ===================================================================
> RCS file: /src/ruby/string.c,v
> retrieving revision 1.182.2.44
> diff -u -w -b -p -r1.182.2.44 string.c
> --- string.c	27 Oct 2005 08:19:20 -0000	1.182.2.44
> +++ string.c	28 Feb 2006 04:13:06 -0000
> @@ -4613,6 +4613,16 @@ rb_str_setter(val, id, var)
>      *var = val;
>  }
>  
> +static VALUE
> +str_capacity(VALUE str)
> +{
> +    if (FL_TEST(str, ELTS_SHARED)) {
> +	return LONG2FIX(0);
> +    }
> +    else {
> +	return LONG2FIX(RSTRING(str)->aux.capa);
> +    }
> +}
>  
>  /*
>   *  A <code>String</code> object holds and manipulates an arbitrary sequence of
> @@ -4730,6 +4740,8 @@ Init_String()
>  
>      rb_define_method(rb_cString, "sum", rb_str_sum, -1);
>  
> +    rb_define_method(rb_cString, "capacity", str_capacity, 0); /* for debug */
> +
>      rb_define_global_function("sub", rb_f_sub, -1);
>      rb_define_global_function("gsub", rb_f_gsub, -1);
>  
> 
> ... And please embed the code like this into [ruby-talk:181563]'s script in order to get
> real memory usage on String/Array. Maybe situation becomes more clear.
> 
> def format(num)
>   num.to_s.gsub(/(\d{1,3})(?=\d{3}+$)/) { $1 + "," }
> end
> 
> def count(type)
>    count = 0
>    capacity = 0
>    ObjectSpace.each_object(type) do |o|
>      count += 1
>      capacity += o.capacity
>    end
>    puts "#{type}"
>    puts "  count = #{format(count)}"
>    puts "  capacity = #{format(capacity)}"
> end
> 
> def pause
>    GC.start
>    count(String)
>    count(Array)
>    puts
>    sleep 5
> end
> 
> class A
>   def run
>     arr = []
>     800000.times { arr << "d" * 7 }
>     pause
>    end
> end
> 
> pause
> A.new.run
> loop { pause }
> 
> 
> 


In This Thread