Java default serialization with long class and field names2019 Community Moderator ElectionJava inner class and static nested classIs there a destructor for Java?How to access java-classes in the default-package?Fastest way to determine if an integer's square root is an integerWhy does Java have transient fields?Efficiency of Java “Double Brace Initialization”?Does Java support default parameter values?Static Classes In JavaWhat is the difference between canonical name, simple name and class name in Java Class?Why does Java allow us to compile a class with a name different than the file name?
What Happens when Passenger Refuses to Fly Boeing 737 Max?
Running a subshell from the middle of the current command
When were linguistics departments first established
How does Dispel Magic work against Stoneskin?
What injury would be of little consequence to a biped but terrible for a quadruped?
How to draw a 3Dbox around a Graph3D result
Want to switch to tankless, but can I use my existing wiring?
Can the druid cantrip Thorn Whip really defeat a water weird this easily?
"However" used in a conditional clause?
Question about partial fractions with irreducible quadratic factors
How could a female member of a species produce eggs unto death?
Why does Deadpool say "You're welcome, Canada," after shooting Ryan Reynolds in the end credits?
Is a lawful good "antagonist" effective?
Ban on all campaign finance?
What happens with multiple copies of Humility and Glorious Anthem on the battlefield?
What is the likely impact on flights of grounding an entire aircraft series?
When two POV characters meet
Is going from continuous data to categorical always wrong?
Who is our nearest neighbor
Playing ONE triplet (not three)
Is having access to past exams cheating and, if yes, could it be proven just by a good grade?
What exactly is the purpose of connection links straped between the rocket and the launch pad
Does anyone draw a parallel between Haman selling himself to Mordechai and Esav selling the birthright to Yaakov?
As a monk, can you make a melee attack roll using your Strength modifier, but roll damage with your Dexterity modifier?
Java default serialization with long class and field names
2019 Community Moderator ElectionJava inner class and static nested classIs there a destructor for Java?How to access java-classes in the default-package?Fastest way to determine if an integer's square root is an integerWhy does Java have transient fields?Efficiency of Java “Double Brace Initialization”?Does Java support default parameter values?Static Classes In JavaWhat is the difference between canonical name, simple name and class name in Java Class?Why does Java allow us to compile a class with a name different than the file name?
my question is, how does java serialisation work?
I'm serializing 100_000 objects of a class with a long class name and long field names.
And it takes much more time then with another class with short class/field names.
So does java serialization write the class and the field names with every object? Or maybe just the field names with every object?
java object serialization
add a comment |
my question is, how does java serialisation work?
I'm serializing 100_000 objects of a class with a long class name and long field names.
And it takes much more time then with another class with short class/field names.
So does java serialization write the class and the field names with every object? Or maybe just the field names with every object?
java object serialization
add a comment |
my question is, how does java serialisation work?
I'm serializing 100_000 objects of a class with a long class name and long field names.
And it takes much more time then with another class with short class/field names.
So does java serialization write the class and the field names with every object? Or maybe just the field names with every object?
java object serialization
my question is, how does java serialisation work?
I'm serializing 100_000 objects of a class with a long class name and long field names.
And it takes much more time then with another class with short class/field names.
So does java serialization write the class and the field names with every object? Or maybe just the field names with every object?
java object serialization
java object serialization
edited Mar 7 at 14:21
WoLFi
asked Mar 7 at 11:07
WoLFiWoLFi
204
204
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Java writes the class descriptor once for each class in the serialization stream. The class descriptor includes the class name, the field names, and the class names (or references to class names) of the field types.
The class descriptor for an object is embedded in the object for the first object of that class in a stream. Subsequent objects of the same class only contain a reference to the class descriptor.
Field names only appear in the class descriptor. The object's field values are represented as an array of values; no names.
It is likely (though not obvious from the spec) that class and field names in class descriptors are de-duped.
For more details, refer to the Object Serialization Stream Protocol specification.
This means that long class and field names will make a serialization longer, but there should not be significant repetition of the names.
It takes much more time then with another class with short class/field names.
That is surprising if (as you seem to be saying) you are putting 100 objects of the same class into a stream.
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55042359%2fjava-default-serialization-with-long-class-and-field-names%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Java writes the class descriptor once for each class in the serialization stream. The class descriptor includes the class name, the field names, and the class names (or references to class names) of the field types.
The class descriptor for an object is embedded in the object for the first object of that class in a stream. Subsequent objects of the same class only contain a reference to the class descriptor.
Field names only appear in the class descriptor. The object's field values are represented as an array of values; no names.
It is likely (though not obvious from the spec) that class and field names in class descriptors are de-duped.
For more details, refer to the Object Serialization Stream Protocol specification.
This means that long class and field names will make a serialization longer, but there should not be significant repetition of the names.
It takes much more time then with another class with short class/field names.
That is surprising if (as you seem to be saying) you are putting 100 objects of the same class into a stream.
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
add a comment |
Java writes the class descriptor once for each class in the serialization stream. The class descriptor includes the class name, the field names, and the class names (or references to class names) of the field types.
The class descriptor for an object is embedded in the object for the first object of that class in a stream. Subsequent objects of the same class only contain a reference to the class descriptor.
Field names only appear in the class descriptor. The object's field values are represented as an array of values; no names.
It is likely (though not obvious from the spec) that class and field names in class descriptors are de-duped.
For more details, refer to the Object Serialization Stream Protocol specification.
This means that long class and field names will make a serialization longer, but there should not be significant repetition of the names.
It takes much more time then with another class with short class/field names.
That is surprising if (as you seem to be saying) you are putting 100 objects of the same class into a stream.
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
add a comment |
Java writes the class descriptor once for each class in the serialization stream. The class descriptor includes the class name, the field names, and the class names (or references to class names) of the field types.
The class descriptor for an object is embedded in the object for the first object of that class in a stream. Subsequent objects of the same class only contain a reference to the class descriptor.
Field names only appear in the class descriptor. The object's field values are represented as an array of values; no names.
It is likely (though not obvious from the spec) that class and field names in class descriptors are de-duped.
For more details, refer to the Object Serialization Stream Protocol specification.
This means that long class and field names will make a serialization longer, but there should not be significant repetition of the names.
It takes much more time then with another class with short class/field names.
That is surprising if (as you seem to be saying) you are putting 100 objects of the same class into a stream.
Java writes the class descriptor once for each class in the serialization stream. The class descriptor includes the class name, the field names, and the class names (or references to class names) of the field types.
The class descriptor for an object is embedded in the object for the first object of that class in a stream. Subsequent objects of the same class only contain a reference to the class descriptor.
Field names only appear in the class descriptor. The object's field values are represented as an array of values; no names.
It is likely (though not obvious from the spec) that class and field names in class descriptors are de-duped.
For more details, refer to the Object Serialization Stream Protocol specification.
This means that long class and field names will make a serialization longer, but there should not be significant repetition of the names.
It takes much more time then with another class with short class/field names.
That is surprising if (as you seem to be saying) you are putting 100 objects of the same class into a stream.
answered Mar 7 at 12:49
Stephen CStephen C
523k71582941
523k71582941
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
add a comment |
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
Thank you. I forgot some zeros. I mean 100_000 Objects. But it still should not make such a difference with your explanation.
– WoLFi
Mar 7 at 14:20
1
1
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
In fact, it should make less of a difference.
– Stephen C
Mar 7 at 14:21
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
I will try it again. Maybe there was something running in the background.
– WoLFi
Mar 7 at 14:23
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55042359%2fjava-default-serialization-with-long-class-and-field-names%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown