我已经在很多地方阅读了序列化的定义。他们似乎都说这是一种将对象(在 Java 或 Python 等 OOP 语言中)转换为字节流的方法。
不是所有的对象在最基本的层面上都已经以字节流的形式存在了吗?或者当我们将任何内容保存到任何磁盘时,是否所有内容都已经只是 1 和 0 被保存并且稍后会被读取?什么不是字节流?什么是将对象转换为相应的字节流?
最佳答案
是的,您程序中的每个对象都已经在 memory 中的某处用某种位表示。 .
但在一般情况下,您不能只获取这些位,而是将它们复制到另一个 process并期望它们工作。
此表示高度依赖于 (a) JVM 的当前状态(b) 什么version of Java您正在运行,并且 (c) 如果对象是 compiled由 JIT .一些位可能在几个对象之间共享。不必所有位都彼此相邻。有些可能会被交换到某个硬盘上。出于优化原因,同一对象的多个副本可能处于稍微不同的状态(一个在 processor cache 中,一个在 2nd level cache 中,一个在 RAM 中,一个在磁盘上)。
Serialization为您提供对象图的定义明确的位表示,因此您可以在不同的过程中实际使用它。
关于java - 不是所有的对象都已经序列化了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61178807/