Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Tue, 28 Jun 2011 14:34:22 -0500 Date: Tue, 28 Jun 2011 12:34:15 -0700 From: Patricia Shanahan User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.17) Gecko/20110414 Thunderbird/3.1.10 MIME-Version: 1.0 Newsgroups: comp.lang.java.programmer Subject: Re: Why "lock" functionality is introduced for all the objects? References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Lines: 30 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 70.230.196.78 X-Trace: sv3-n6Iu0KKY/p8EFuNA3ARJyNbWCYUS1KH/oiBe+Eoj9Ng7Ba4r1hTTQ7IHA9QH04awRa4c6By2/bHfmhj!LcmlGoCGiaNFShJigt0d9Ais0nBMXIMvmBVxKc6pDsHgwdNDzvuvG5iD/3zSuahTB9deWL/9OTvn!q07yymexIs/c3lXfHQs5ciT/2e1xtRFuhkWBypB0S5pfOA== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2738 Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:5748 On 6/28/2011 11:54 AM, supercalifragilisticexpialadiamaticonormalizeringelimatisticantations wrote: > On 28/06/2011 2:42 PM, Patricia Shanahan wrote: >> Each String instance has the following fields: >> >> private final char value[]; >> private final int offset; >> private final int count; >> private int hash; >> >> There are 12 bytes in addition to the char array. The offset and count >> fields allow quick sub-string construction, and hash is used to cache >> the hashCode result. > > Oh, geez, even *more* overhead. And let's not forget the array has its > own separate object header and length field! The array may be shared by several String objects. In general, many trade-offs in Java, not just the decision to make every object capable of being a lock, assume that other considerations are more important than minimizing memory use. For example, caching the hash code pays four bytes per String in order to have a hash code that depends on the entire string, without paying the cost of calculating it repeatedly when a String is used as a hash table key. If, for your purposes, minimal memory use is very important, you may want to consider other languages with other trade-offs. Patricia