[#33161] Call/CC and Ruby iterators. — olczyk@... (Thaddeus L Olczyk)

Reading about call/cc in Scheme I get the impression that it is very

11 messages 2002/02/05

[#33242] favicon.ico — Dave Thomas <Dave@...>

19 messages 2002/02/06
[#33256] Re: favicon.ico — Leon Torres <leon@...> 2002/02/06

[#33435] Reg: tiny contest: who's faster? (add_a_gram) — grady@... (Steven Grady)

> My current solution works correctly with various inputs.

17 messages 2002/02/08

[#33500] Ruby Embedded Documentation — William Djaja Tjokroaminata <billtj@...>

Hi,

24 messages 2002/02/10
[#33502] Re: Ruby Embedded Documentation — "Lyle Johnson" <ljohnson@...> 2002/02/10

> Now, I am using Ruby on Linux, and I have downloaded Ruby version

[#33615] Name resolution in Ruby — stern@... (Alan Stern)

I've been struggling to understand how name resolution is supposed to

16 messages 2002/02/11

[#33617] choice of HTML templating system — Paul Brannan <paul@...>

I am not a web developer, nor do I pretend to be one.

23 messages 2002/02/11

[#33619] make first letter lowercase — sebi@... (sebi)

hello,

20 messages 2002/02/11
[#33620] Re: [newbie] make first letter lowercase — Tobias Reif <tobiasreif@...> 2002/02/11

sebi wrote:

[#33624] Re: [newbie] make first letter lowercase — "Jeff 'japhy' Pinyan" <jeffp@...> 2002/02/11

On Feb 11, Tobias Reif said:

[#33632] Re: [newbie] make first letter lowercase — Mathieu Bouchard <matju@...> 2002/02/12

[#33731] simple XML parsing (greedy / non-greedy — Ron Jeffries <ronjeffries@...>

Suppose I had this text

14 messages 2002/02/13

[#33743] qualms about respond_to? idiom — David Alan Black <dblack@...>

Hi --

28 messages 2002/02/13
[#33751] Re: qualms about respond_to? idiom — Dave Thomas <Dave@...> 2002/02/13

David Alan Black <dblack@candle.superlink.net> writes:

[#33754] Re: qualms about respond_to? idiom — David Alan Black <dblack@...> 2002/02/13

Hi --

[#33848] "Powered by Ruby" banner — Yuri Leikind <YuriLeikind@...>

Hello Ruby folks,

78 messages 2002/02/14
[#33909] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/14

On Thu, 14 Feb 2002, Yuri Leikind wrote:

[#33916] RE: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

A modest submission:

[#33929] Re: "Powered by Ruby" banner — yet another bill smith <bigbill.smith@...> 2002/02/15

Kent Dahl wrote:

[#33932] OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 5:54 AM, "yet another bill smith" <bigbill.smith@verizon.net>

[#33933] RE: OT Netscape 4.x? was Re: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

i just don't understand why it didn't show up! dhtml/javascript, ok, but a

[#33937] Re: OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 7:16 AM, "Jack Dempsey" <dempsejn@georgetown.edu> wrote:

[#33989] Re: OT OmniWeb [was: Netscape 4.x?] — Sean Russell <ser@...> 2002/02/16

Chris Gehlker wrote:

[#33991] Re: OT OmniWeb [was: Netscape 4.x?] — Rob Partington <rjp@...> 2002/02/16

In message <3c6e5e01_1@spamkiller.newsgroups.com>,

[#33993] Re: OT OmniWeb [was: Netscape 4.x?] — Thomas Hurst <tom.hurst@...> 2002/02/16

* Rob Partington (rjp@browser.org) wrote:

[#33925] Re: "Powered by Ruby" banner — Martin Maciaszek <mmaciaszek@...> 2002/02/15

In article <3C6CFCCA.5AD5CA67@scnsoft.com>, Yuri Leikind wrote:

[#33956] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/15

On Fri, 15 Feb 2002, Martin Maciaszek wrote:

[#33851] Ruby and .NET — Patrik Sundberg <ps@...>

I have been reading a bit about .NET for the last couple of days and must say

53 messages 2002/02/14

[#34024] Compiled companion language for Ruby? — Erik Terpstra <erik@...>

Hmmm, seems that my previous post was in a different thread, I'll try

12 messages 2002/02/16

[#34036] The GUI Returns — "Horacio Lopez" <vruz@...>

Hello all,

33 messages 2002/02/17

[#34162] Epic4/Ruby — Thomas Hurst <tom.hurst@...>

Rejoice, for you no longer have to put up with that evil excuse for a

34 messages 2002/02/18

[#34185] Operator overloading and multiple arguments — ptkwt@...1.aracnet.com (Phil Tomson)

I'm trying to overload the '<=' operator in a class in order to use it for

10 messages 2002/02/18

[#34217] Ruby for web development — beripome@... (Billy)

Hi all,

21 messages 2002/02/19

[#34350] FAQ for comp.lang.ruby — "Hal E. Fulton" <hal9000@...>

RUBY NEWSGROUP FAQ -- Welcome to comp.lang.ruby! (Revised 2001-2-18)

15 messages 2002/02/20

[#34375] Setting the Ruby continued — <jostein.berntsen@...>

Hi,

24 messages 2002/02/20
[#34384] Re: Setting the Ruby continued — Paulo Schreiner <paulo@...> 2002/02/20

Also VERY important:

[#34467] recursive require — Ron Jeffries <ronjeffries@...>

I'm having a really odd thing happen with two files that mutually

18 messages 2002/02/21

[#34503] special characters — Tobias Reif <tobiasreif@...>

Hi all,

13 messages 2002/02/22

[#34517] Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>

16 messages 2002/02/22

[#34597] rdoc/xml questions — Dave Thomas <Dave@...>

24 messages 2002/02/23

[#34631] Object/Memory Management — "Sean O'Dell" <sean@...>

I'm new to Ruby and the community here (I've been learning Ruby for a grand

44 messages 2002/02/23

[#34682] duplicate method name — Ron Jeffries <ronjeffries@...>

I just found a case in a test file where i had two tests of the same

16 messages 2002/02/24
[#34687] Re: duplicate method name — s@... (Stefan Schmiedl) 2002/02/24

Hi Ron.

[#34791] Style Question — Ron Jeffries <ronjeffries@...>

So I'm building this set theory library. The "only" object is supposed

13 messages 2002/02/25

[#34912] RCR?: parallel to until: as_soon_as — Tobias Reif <tobiasreif@...>

Hi,

18 messages 2002/02/26

[#34972] OT A Question on work styles — Chris Gehlker <gehlker@...>

As a Mac baby I just had to step through ruby in GDB *from the command line*

20 messages 2002/02/28

[#35015] Time Comparison — "Sean O'Dell" <sean@...>

I am using the time object to compare times between two files and I'm

21 messages 2002/02/28

Re: Object/Memory Management

From: "Sean O'Dell" <sean@...>
Date: 2002-02-23 23:21:41 UTC
List: ruby-talk #34657
"Yohanes Santoso" <ysantoso@jenny-gnome.dyndns.org> wrote in message
news:8DC67533CBF3F480.E9A6522E91258840.45C12F3FF7DE783D@lp.airnews.net...
> "Sean O'Dell" <sean@celsoft.com> writes:
>
> > Isn't there a way we can *explicitly* destroy objects?  I like to keep
> > things tight and clean in my code,
>
> Why? Depending on what you do and how you do it, GC can be much faster
> than explicit free(). Later on this.

Because I like controlling when my program cleans itself up.

> > and simply walking away from objects I've
> > created absolutely freaks me out.
>
> It seems that Ruby is your first GC'ed language. Make the
> transition. Let the computer does mudane things like freeing memory
> and liberate yourself to pursue other more interesting things (like
> going fishing more often).

It is.  I really don't yet fully understand why this is better than just
stack-based memory management, or even reference counting.

> > I don't like leaving my program bloated
>
> Simply restrict your process to have a certain maximum memory size. In
> Ruby, limiting the size is an external task: you need to tell the OS
> to set the limit, e.g.: in UNIX you can use the command 'limit' before
> starting up Ruby. OTOH, Java interpreter does an internal
> limiting. Anyway, you set how 'bloated' your program can be, and
> forget it.

Well...I don't know how "bloated" my program is going to be.  Sometimes
things sit quiet and use very little memory.  Sometimes things get hairy and
for a very short time, something *could*, conceivably, use every bit of
memory available.  When that happens, I want it to shrink back up
immediately after the process is finished.  But I don't want to limit my
Ruby applications...if they need memory, they need memory.

I know I can call the garbage collector...but that requires that my code
recognizes when things are getting heavy.  That means *I* am managing
memory.  I would rather that each method be able to exit completely cleanly,
with every object created during its call gone and out of memory.  I can
call the collector every time, but isn't that a rather large performance hit
to be calling it every time my methods exit?

> > Also, a related issue...why isn't there a finalize call?  I don't mean
the
> > Is that in the works or is that just not the Ruby way?
>
> Finalizer is provided by ObjectSpace#define_finalizer. Look back the
> archive to learn more why the finalizer is outside the object
> (keyword: define_finalizer).

I believe define_finalizer calls a finalizing method *after* the object
dies, so this won't work.  A true destruction mechanism is called in the
context of the healthy object, allowing it to perform exit tasks using
resources it may have allocated or references to other objects/variables.

> Now on how GC can be faster. 2 years ago I had to construct a
> forgiving HTML parser. I ended up making four versions: 2 Java and 2
> C. Of those 4, 1 Java and 1 C use object pooling, 1 Java use GC, and 1
> C uses explicit free() which is performed right after a variable is
> unused. All 4 use Lex or JLex. The rules for the lexer are all
> similar. In brief, here is the performance table for large HTML (> 1
> MB) document:
>
> C with object pooling < Java with GC < Java with object pooling < C
> with explicit free.
>
> The only time the performance of Java with GC was disappointing was
> when running it using the MS JVM. MS's JVM is so damned brain
> dead. The initial heap cannot be set to more than 32 MB. Setting the
> maximum heap size to 512 MB will not help at all because JLex produces
> an incredible amount of very short-lived object (String). For every
> object created, if the current heap is full, then MS' JVM performs a
> GC and increases the heap usage if necessary. This is as expected from
> a Java GC. However, what I want is to postpone GC as late as
> possible. Thus, I have to set the initial heap size to some large
> values which is possible under other JVM but MS'.
>
> In short, GC is a good idea. Its performance is reasonable and yet it
> frees programmer to do interesting things. It's most certainly faster
> than reference counting (which is a special case of explicit free()),
> and yet easier at the same time.

The thing is, I need my programs to shrink up and be as small as possible at
all times.  I am still trying to grasp how I do that.  With C++, Delphi,
Perl (my variables), I know that when a block is exited, the memory I used
(whether stack or explicitly free'd memory) is gone and my program is
shrunken, for the most part, to the size it started at (save for memory used
in the context of the start point).

Here's an example of what I'm afraid of.  A Ruby process starts running and
grows extremely large with unused objects, but it doesn't completely hog the
whole system so garbage collection isn't triggered by a memory failure.  A
few MB's of RAM are left.  Then my web server suddenly needs a large amount
of memory, but there's none available so it fails miserably.  Ruby didn't
know the web server needed memory, so it didn't perform garbage collection.
So, my web process dies because Ruby has dead objects floating around in
memory; that's what that scenario boils down to.

In the above scenario, the only way I can think of to prevent that is to
have coded something in my program that manages memory usage and calls
garbage collection at some point that I determine is a good time to clean
things up.  But that's not very automatic.

What am I missing?  When and how often does Ruby call for garbage
collection?

    Sean


In This Thread