NIO 是不是在使用 /dev/shm 中的小型序列化流时也能提供优势?
Posted
技术标签:
【中文标题】NIO 是不是在使用 /dev/shm 中的小型序列化流时也能提供优势?【英文标题】:Does NIO deliver advantages even on consuming small serialized Stream from /dev/shm?NIO 是否在使用 /dev/shm 中的小型序列化流时也能提供优势? 【发布时间】:2013-05-06 21:10:05 【问题描述】:例如有一些应用程序(在我的 src 控件之外)会生成成千上万的序列化 Map 实例,这些实例存储为 /dev/shm/some Map-ID.ser 。它们使用普通的旧 java.io.* 包进行序列化。
我的 src 控件中的代码(用于反序列化 Map 实例)是否可以从使用 NIO 而不是普通的旧 java.io.* 包中受益?或者,理论上,鉴于这些 IO 操作都在 /dev/shm 上,是否任何 NIO 优势都可以被认为可以忽略不计?
private Map<Integer,String> deserializeMapFrKernelSHM(String shmKey)
Map<Integer,String> retM = null;
try
FileInputStream frKernelSHM = new FileInputStream("/dev/shm/"+shmKey+".ser");
ObjectInputStream in = new ObjectInputStream(frKernelSHM);
retM = (Map<Integer,String>) in.readObject();
System.out.println("Linux IPC shmop(GET) de-serialized Map<K,V> from /dev/shm/"+shmKey+".ser");
catch (Exception e)
e.printStackTrace();
return(retM);
【问题讨论】:
【参考方案1】:不是真的。将对象序列化与 NIO 结合起来几乎是不可能的。
您可以尝试在 FileInputStream 周围使用 BufferedInputStream。
【讨论】:
以上是关于NIO 是不是在使用 /dev/shm 中的小型序列化流时也能提供优势?的主要内容,如果未能解决你的问题,请参考以下文章
/tmp 与 /dev/shm 用于 Linux 上的临时文件存储?