[#7271] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — ville.mattila@...
[#7272] [PATCH] OS X core dumps when $0 is changed and then loads shared libraries — noreply@...
Bugs item #3399, was opened at 2006-01-31 22:25
[#7274] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — ville.mattila@...
[#7277] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — ville.mattila@...
[#7280] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — ville.mattila@...
[#7286] Re: ruby-dev summary 28206-28273 — ara.t.howard@...
On Thu, 2 Feb 2006, Minero Aoki wrote:
mathew wrote:
mathew wrote:
I'm not sure we even need the 'with' syntax. Even if we do, it breaks
On 2006.02.07 10:03, Evan Webb wrote:
Umm, on what version are you seeing a warning there? I don't and never
On 2006.02.07 14:47, Evan Webb wrote:
I'd by far prefer it never emit a warning. The warning is assumes you
On Tue, 7 Feb 2006, Evan Webb wrote:
On Wed, 8 Feb 2006, Timothy J. Wood wrote:
[#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:
On Feb 5, 2006, at 5:05 AM, Mauricio Fernandez wrote:
On Wed, Feb 22, 2006 at 02:21:24PM +0900, Eric Hodel wrote:
Hi,
On Mon, Feb 27, 2006 at 12:45:28AM +0900, Yukihiro Matsumoto wrote:
On Sun, Feb 26, 2006 at 06:06:17PM +0100, Mauricio Fernandez wrote:
In article <20060226171117.GB29508@tux-chan>,
In article <1140968746.321377.18843.nullmailer@x31.priv.netlab.jp>,
Hi,
In article <m1FDshr-0006MNC@Knoppix>,
In article <87irr047sx.fsf@m17n.org>,
In article <87vev0hxu5.fsf@m17n.org>,
Just my quick 2 cents...
In article <92f5f81d0602281855g27e78f4eua8bf20e0b8e47b68@mail.gmail.com>,
Hi,
In article <m1FESAD-0001blC@Knoppix>,
Hi,
[#7331] Set containing duplicates — noreply@...
Bugs item #3506, was opened at 2006-02-08 22:52
[#7337] Parse error within Regexp — Bertram Scharpf <lists@...>
Hi,
Hi,
On Sun, Feb 12, 2006 at 01:34:55AM +0900, Yukihiro Matsumoto wrote:
[#7344] Ruby 1.8.4 on Mac OS X 10.4 Intel — Dae San Hwang <daesan@...>
Hi, all. This is my first time posting to this mailing list.
On Feb 12, 2006, at 6:14 AM, Dae San Hwang wrote:
[#7347] Latest change to eval.c — Kent Sibilev <ksruby@...>
It seems that the latest change to eval.c (1.616.2.154) has broken irb.
Hi,
Thanks, Matz.
[#7364] Method object used as Object#instance_eval block doesn't work (as expected) — noreply@...
Bugs item #3565, was opened at 2006-02-15 02:32
Hi,
Hi,
On Pr 2006-02-16 at 03:18 +0900, Yukihiro Matsumoto wrote:
[#7376] Minor tracer.rb patch — Daniel Berger <Daniel.Berger@...>
Hi,
[#7396] IO#reopen — Mathieu Bouchard <matju@...>
[#7403] Module#define_method "send hack" fails with Ruby 1.9 — Emiel van de Laar <emiel@...>
Hi List,
Emiel van de Laar <emiel@rednode.nl> writes:
Hi --
[#7439] FYI: ruby-lang.org is on spamcop blacklists — mathew <meta@...>
dnsbl/bl.spamcop.net returned deny: for
[#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
Hello.
Hello.
Re: GC Question
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 }