当我 运行 一个 java 应用程序在 U 盘上时,内部硬盘驱动器上会有任何可恢复的数据吗?

Will there be any recoverable data on the internal harddrive when i run a java Application on a USB-Stick?

假设我有一个 Java 应用程序将数据存储在 sqlite 数据库中。应用程序本身及其数据库保存在 USB 记忆棒或任何其他外部硬盘驱动器等上。所以问题是:如果我将 USB 记忆棒插入计算机并 运行 程序,使用它存储一些数据在sqlite数据库中,内部硬盘上是否有可恢复的临时数据?

如果您 运行 在 Windows 或 Linux 上进行此操作,默认情况下不会。一般来说,当您 read/write 来自可移动设备的数据时,您在目标 PC 上拥有的唯一临时数据是将 reads/writes 缓冲到设备的磁盘缓存 (RAM)。此内存在设计上永远不会缓存到磁盘,即使系统正在交换(缓存不交换,只处理内存交换)。

当应用程序 运行ning 时,来自您的应用程序的数据可能以交换文件内容的形式存在于磁盘上,因为在某些时候您的程序将 运行 并且它将使用将该数据从磁盘加载到进程内存中 space - 但无论您使用何种存储介质,情况都是如此。

尽管如此警告:即使您准备好接受这种仅交换的情况,USB 记忆棒通常是一种性能较差的数据库介质。 OS 倾向于将这些东西的缓存保持在相当小的范围内,因为您随时都可能拔出 USB 棒,文件可能会损坏。由于这个原因,从 USB 设备到 运行 数据库的形式非常糟糕,因为写入设备的顺序可能违反预写日志记录协议或以其他方式破坏一致性。

您也永远无法确定诸如 AV 扫描仪或其他应用程序之类的其他应用程序是否出于某种原因(例如处理文件)而没有从可移动设备复制数据。做最坏的打算,您很少会失望。