汇编语言中有一个非常有趣的内容,如果使用 gdb 去调试 /bin/ls 这个程序,可以看到直接进入首行地址是不行的,因为在内存中,这个实际上是一个相对地址。
这也是为什么我们需要序列化。
因为按照正常的逻辑思路来说,为什么 Java 需要序列化多此一举呢?对象在内存中也是一个正常地一串二进制数据,为什么不能直接复制这些内容传输出去呢?
首先,这有点类似于我前面提到的像汇编中同样的问题。在 JVM 中,进程访问的是虚拟地址。如果我的电脑内存中存储的这个虚拟空间地址中的绝对地址,直接复制传输到另外一个人的电脑中,它的 JVM 启动并访问了这个绝对地址,也许会出大问题!
所以一个包装好的,内部处理好的完整的、精致整洁的处理类——序列化,它在安全意义上是非常重要的!

发表回复