/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Hvor meget fylder en streng ?
Fra : ] Him [


Dato : 17-01-01 19:47

Hejsa!!

Hvor meget vil en streng på 6 char's fylde?
Eks. String n = new String("abcdef");

På forhånd tak!






 
 
Brian Matzon (17-01-2001)
Kommentar
Fra : Brian Matzon


Dato : 17-01-01 22:46

From: "]_Him_[" <morten_kenneth@yahoo.com>
Newsgroups: dk.edb.programmering.java
Sent: Wednesday, January 17, 2001 7:46 PM
Subject: Hvor meget fylder en streng ?


> Hejsa!!
>
> Hvor meget vil en streng på 6 char's fylde?
> Eks. String n = new String("abcdef");

I hvad?
Bananer æbler bytes?

String.Length() skulle gerne være 6
men den reelle længde er 6 chars + en terminering = 7 bytes

dertil kommer alle de private fields den har
(f.eks. int offset, int count, int hash, ling serialVersionUID osv)

så... :)

/Brian Matzon



Ulrik Magnusson (17-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 17-01-01 23:33

> String.Length() skulle gerne være 6
> men den reelle længde er 6 chars + en terminering = 7 bytes

Strings null-termineres ikke og chars fylder 2 bytes i Java. Men det
giver vel ingen mening at begynde at gætte på objekters størrelse i
Java, eller?

Et eksperiment med at implementere en SizeOf klasse (læg mærke til
antagelserne)
http://www.glenmccl.com/tip_038.htm :

Et forslag om at bruge Runtime.freememory() (eller måske nærmere -
hvorfor det ikke med garanti virker..):
http://www.norvig.com/java-iaq.html#sizeof :

Her i øvrigt en liste over størrelser:

boolean 1 bit
char 16 bit
byte 8 bit
short 16 bit
int 32 bit
long 64 bit
float 32 bit
double 64 bit

Ulrik Magnusson


Karl Krukow (18-01-2001)
Kommentar
Fra : Karl Krukow


Dato : 18-01-01 00:45

In article <3A669966.6400285B@yahoo.com>, "Ulrik Magnusson"
<ulrikm@yahoo.com> wrote:

>> String.Length() skulle gerne være 6 men den reelle længde er 6 chars +
>> en terminering = 7 bytes
>
> Strings null-termineres ikke og chars fylder 2 bytes i Java. Men det
> giver vel ingen mening at begynde at gætte på objekters størrelse i
> Java, eller?
>

Nu ved jeg ikke hvilken garbage collection algoritme der bruges i de
forskellige java implementationer, men er vel nødvendigt for en garbage
collector at vide størrelsen af hvert objekt?

mvh
Karl

Ulrik Magnusson (18-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 18-01-01 00:52

> Nu ved jeg ikke hvilken garbage collection algoritme der bruges i de
> forskellige java implementationer, men er vel nødvendigt for en garbage
> collector at vide størrelsen af hvert objekt?

Det må man formode, men en garbage collector som skal vide noget om
dette, må være skrevet i et platformsafhængigt sprog.

Ulrik Magnusson


Karl Krukow (18-01-2001)
Kommentar
Fra : Karl Krukow


Dato : 18-01-01 01:02

In article <3A66ABC1.269BF4@yahoo.com>, "Ulrik Magnusson"
<ulrikm@yahoo.com> wrote:

>> Nu ved jeg ikke hvilken garbage collection algoritme der bruges i de
>> forskellige java implementationer, men er vel nødvendigt for en
>> garbage collector at vide størrelsen af hvert objekt?
>
> Det må man formode, men en garbage collector som skal vide noget om
> dette, må være skrevet i et platformsafhængigt sprog.
>

Burde det ikke være muligt, på compile-time, at afgøre hvad størrelsen af
objekter af en given klasse er (evt. forskelligt fra arkitektur til
arkitektur)?

Ulrik Magnusson (18-01-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 18-01-01 20:45

> Burde det ikke være muligt, på compile-time, at afgøre hvad størrelsen af
> objekter af en given klasse er (evt. forskelligt fra arkitektur til
> arkitektur)?

Det ville vel netop åbne for muligheden for platformsuafhængige programmer.
Jeg kan heller ikke lige se hvad det skal bruges til?

Ulrik Magnusson


Thorbjørn Ravn Ander~ (17-01-2001)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 17-01-01 23:52

Brian Matzon wrote:

> String.Length() skulle gerne være 6
> men den reelle længde er 6 chars + en terminering = 7 bytes
>
> dertil kommer alle de private fields den har
> (f.eks. int offset, int count, int hash, ling serialVersionUID osv)

Det skulle vel ikke være nødvendigt mere mere end længden
plus de faktiske tegn (som er 16-bit Unicode tegn). Length
er også en int, så det må være (længden+1)*2 bytes, plus
vanligt overhead for hvert objekt, som formentlig varierer
fra JVM til JVM.

Alle de andre ting angivet i dokumentationen til String er
klasse-ting, som ikke behøver ligge i hvert objekt.

--
Thorbjørn Ravn Andersen "...sound
of...Tubular Bells!"
http://bigfoot.com/~thunderbear

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste