java - 不是所有的对象都已经序列化了吗?

标签 java serialization python-3.7

我已经在很多地方阅读了序列化的定义。他们似乎都说这是一种将对象(在 Java 或 Python 等 OOP 语言中)转换为字节流的方法。

不是所有的对象在最基本的层面上都已经以字节流的形式存在了吗?或者当我们将任何内容保存到任何磁盘时,是否所有内容都已经只是 1 和 0 被保存并且稍后会被读取?什么不是字节流?什么是将对象转换为相应的字节流?

最佳答案

是的,您程序中的每个对象都已经在 memory 中的某处用某种位表示。 .

但在一般情况下,您不能只获取这些位,而是将它们复制到另一个 process并期望它们工作。

此表示高度依赖于 (a) JVM 的当前状态(b) 什么version of Java您正在运行,并且 (c) 如果对象是 compiledJIT .一些位可能在几个对象之间共享。不必所有位都彼此相邻。有些可能会被交换到某个硬盘上。出于优化原因,同一对象的多个副本可能处于稍微不同的状态(一个在 processor cache 中,一个在 2nd level cache 中,一个在 RAM 中,一个在磁盘上)。

Serialization为您提供对象图的定义明确的位表示,因此您可以在不同的过程中实际使用它。

关于java - 不是所有的对象都已经序列化了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61178807/

相关文章:

amazon-web-services - Boto3 DynamoDB ParamValidationError 插入嵌套对象时

java - 无法从java中的日期中减去天数

ios - 在 iOS Phonegap 应用程序上序列化文件传输

android - 将对象写入 android 中的内部存储(在新目录中)

C# 序列化包含更多列表的对象列表

python - 如何获得 Python 3.7 新的数据类字段类型?

java - 如何在java中编写和使用正则表达式

java - 就地快速排序

java - log4j 将标准输出重定向到 DailyRollingFileAppender

path - 自定义路径lib.Path()