All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Shawn O. Pearce" <spearce@spearce.org>
To: Robin Rosenberg <robin.rosenberg.lists@dewire.com>
Cc: Yann Simon <yann.simon.fr@gmail.com>, git <git@vger.kernel.org>
Subject: Re: [JGIT PATCH v2] FindBugs: don't use new String(String) in RefDatabase
Date: Tue, 21 Jul 2009 08:03:37 -0700	[thread overview]
Message-ID: <20090721150337.GP11191@spearce.org> (raw)
In-Reply-To: <200907211650.36831.robin.rosenberg.lists@dewire.com>

Robin Rosenberg <robin.rosenberg.lists@dewire.com> wrote:
> Shawn, any references for the ability of JIT's abilities to stack allocate in this context? For
> me learning, will commit anyway.

See [1] for example.  I read a presentation from a HotSpot engineer
at Sun a year or two ago that talked about it as a feature in the
Sun Java 6 runtime, but I can't track that down now.

Its a pretty simple concept.  Folks realized that some types,
e.g. StringBuilder, are often used only within a single stack
frame, and that escape analysis can be used to prove that the
StringBuilder instance is only visible within that stack frame.
Doing a stack allocation instead of a heap allocation would allow
the JVM to avoid creating unnecessary garbage.

Ah, according to [2] the feature is only in 6u14 and later, and is
an option you still need to enable on the command line.  But its
the direction the Sun JVM is going.  I imagine it would be on by
default in the future, various performance tests seem to indicate
its a worthwhile optimization.

[1] http://www.ibm.com/developerworks/java/library/j-jtp09275.html?ca=dgr-lnxw01JavaUrbanLegends
[2] http://java.sun.com/javase/6/webnotes/6u14.html

-- 
Shawn.

  reply	other threads:[~2009-07-21 15:04 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-19  9:15 [PATCH JGIT] Method invokes inefficient new String(String) constructor Yann Simon
2009-03-19 16:01 ` Shawn O. Pearce
2009-03-19 16:44   ` Yann Simon
2009-07-09  8:47   ` Yann Simon
2009-07-10 15:34     ` [PATCH] FindBugs: don't use new String(String) in RefDatabase Shawn O. Pearce
2009-07-13  8:07       ` Yann Simon
2009-07-13 14:53         ` [JGIT PATCH v2] " Shawn O. Pearce
2009-07-21 14:50           ` Robin Rosenberg
2009-07-21 15:03             ` Shawn O. Pearce [this message]
2009-07-21 19:47               ` Robin Rosenberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090721150337.GP11191@spearce.org \
    --to=spearce@spearce.org \
    --cc=git@vger.kernel.org \
    --cc=robin.rosenberg.lists@dewire.com \
    --cc=yann.simon.fr@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.