Talk:Garbage collection (computer science)

From Wikipedia, the free encyclopedia
Jump to: navigation, search
          This article is of interest to the following WikiProjects:
WikiProject Computer science (Rated C-class, High-importance)
WikiProject icon This article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 High  This article has been rated as High-importance on the project's importance scale.
 
WikiProject Computing (Rated C-class, Mid-importance)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
C-Class article C  This article has been rated as C-Class on the project's quality scale.
 Mid  This article has been rated as Mid-importance on the project's importance scale.
 
edit·history·watch·refresh Stock post message.svg To-do list for Garbage collection (computer science):

Here are some tasks awaiting attention:

syntactical vs. semantical garbage[edit]

In Reachability of an object both terms (syntactical and semantical garbage) are used, which might be confusing the reader. If both mean the same, the alternative term could be introduced.

Non-deterministic GC is incompatible with RAII based management of non GCed resources[edit]

'Quertyus' added a 'Citation needed' to this. Is a citation really needed for something that obvious?

If RAII relies on a destructor being called (and being called in a relatively timely manner) for it to to be able to manage resources, and if non-deterministic GC gives no guarantees whatsoever that the destructor will be called (either in a timely manner, or even at all), than the fact that the two are incompatible should IMO be blindingly obvious and need no citation.

I thus would like to propose the citation needed be removed from this statement. — Preceding unsigned comment added by 92.70.45.2 (talk) 14:51, 19 February 2014 (UTC)

Patents. Eg. non-patented ((hard) real-time) GC algorithms[edit]

Are all real-time algorithms patented? I was very interested in seeing Staccado (see my recent edits). It seems to fulfill all important criteria for hard real-time GC algorithm. I found a patent that migh ally to Staccado (didn't read to carefully). It doesn't mention that name in title or in text. It however mentions Metronome a lot that it is based on. I assume Metronome is patented but do not know for sure: [[1]]. Azul uses a patented [2] algorithm, but they sell hardware. Should we say that algorithms are patented? It seems they (real-time) all might be? Let's say they all are and they expire in 20 years then anyone know if a soft or even hard real-time GC algorithm older than that is available (that could be used eg. for Java, or C/C++)? Seems patent-less hard real-time Java (or even soft) is not available for the next 15 years or so. While for C/C++ it is as GC is not needed. comp.arch (talk) 14:48, 13 March 2014 (UTC)

Hm, what about this? — Dsimic (talk | contribs) 19:20, 15 March 2014 (UTC)
Great, thanks. It doesn't say anything about patents or the date. I assume it's over 20 years old (references are old and it's about LISP) even though the html file is newer. Then the patents would be expired in the states (and everywhere?). I haven't looked into the algorithms enough in the article here, but they mentioned arraylets (and compiler support). I haven't thought it through, it seems arrays might be a problem. When I learned (about) LISP I didn't learn about arrays in it. As it is functional and based on linked lists maybe it helps if no arrays are used for real time. Doesn't (modern) LISP however also support arrays? And while the article you pointed to says real time, should we assume hard real-time? [Even if the GC is real-time and the rest of Java/programming language, would VM not screw that up possibly (be disabled?).] The new algorithms must have something better or they would not be thought up. Staccado is also concurrent, while Metronome is not but still an improvement I assume on what you pointed to. comp.arch (talk)

GC in C++ (and C, and Objective versions)[edit]

First theoretical: "Notable exceptions are C++ and Delphi which have destructors". Clang and Visual Studio have, since C++11, support the "Minimal GC support", while GCC doesn't.[3][4] So it seems to be possible. From what I understand (only) "conservative" GC (Boehm) is possible in C. I *think* the same applies to C++ even pre-C++11. As I understand it, it's a hack that is not portable but works. Where? I guess for specific processor or environments. What "Minimal GC support" does is make it portable (still only conservative and possibly the GC-runtime itself is not portable between compilers?). I'm I correct so far? Then, what is the problem with destructors? Or never mind, possibly just strike that out of the page. [I assume everything that works for C++ works for Objective-C(++) and C, and what works for C works for Objective-C, but (may) not C++.] [Bonus points, would (hard) real-time GC, that is incremental and even concurrent also be possible with C(++11)? I'm not seeing why the "Java" algorithms in theis page wouldn't work, only they would have to be Boehm-style.]

Practically what does this mean? Is there GC that actually works well for C++? Preferally portable to all compilers that have "minimal GC support". Note the "minimal GC support" doesn't provide GC, if I understand correctly, only that GC could be implemented portably.

According to the N2670 spec, this thread and this interview, that just opens a path for various C++ implementations to include automated garbage collection. So, yes, C++ finally became an officially dumb thing, but just optionally. — Dsimic (talk | contribs) 19:28, 25 March 2014 (UTC)