If you're not using a parallel garbage collector (which is the case by default), then generating significant garbage will result in not- insignificant GC pauses. Allocation itself isn't a synchronous operation, but the default GC is.

Most java profilers have thread-related tools that allow you to see on what, when, and for how long threads are blocking. It'd be worth it to enable parallel GC just to see what happens, but beyond that, it sounds like some data would help in determining specifically what code is tripping you up.

If you can post/paste code, that might help, too.

- Chas

On Mar 27, 2010, at 12:13 AM, Lee Spector wrote:


Is it possible that multiple threads all furiously generating list structure would have some sort of contention for the memory allocation state?

My losses of multicore utilization seem to be correlated with the generation of lots of random expressions in concurrent threads. I'd been worrying about contention for the random states, which I think I've now made thread local, but now I wonder if the contention might be in the allocation. Possible? If so, then is there a way around it?

Thanks,

-Lee

--
Lee Spector, Professor of Computer Science
School of Cognitive Science, Hampshire College
893 West Street, Amherst, MA 01002-3359
lspec...@hampshire.edu, http://hampshire.edu/lspector/
Phone: 413-559-5352, Fax: 413-559-5438

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

To unsubscribe from this group, send email to clojure+unsubscribegooglegroups.com or 
reply to this email with the words "REMOVE ME" as the subject.

Reply via email to