为 Eclipse 开发优化 Ramdisk 的使用

Posted

技术标签:

【中文标题】为 Eclipse 开发优化 Ramdisk 的使用【英文标题】:Optimize Use of Ramdisk for Eclipse Development 【发布时间】:2009-12-03 06:20:46 【问题描述】:

我们正在使用 Eclipse 在具有 4GB RAM 的 32 位 Vista 机器上开发 Java/SpringSource 应用程序。由于在虚拟地址空间中保留了硬件等,操作系统暴露了大约 3.3GB 的 RAM。我遇到了几个可以从操作系统隐藏的 RAM 创建虚拟磁盘的 Ramdisk 驱动程序,我正在寻找如何最好地使用 740MB 虚拟磁盘来加速我们环境中的开发的建议。

对我们来说,开发中最慢的部分是编译和启动 SpringSource dm Server。

一种选择是将 Vista 配置为交换到 Ramdisk。这很有效,并且在内存不足的情况下显着加快了开发速度。但是,操作系统可用的 3.3GB 通常就足够了,而且在很多情况下我们并没有过多地使用交换文件。

另一个选择是使用 Ramdisk 作为临时文件的位置。使用 Vista mklink 命令,我创建了一个从 SpringSource dm 服务器的工作区通常驻留到 Ramdisk 的硬链接。这显着改善了服务器启动时间,但对编译时间没有任何作用。当工作目录被充分利用时,Ramdisk 上大约还有 500MB 可用空间,所以还有更多空间。

还有哪些其他文件/目录可能适合放置在 Ramdisk 上? Eclipse 相关文件? (部分)JDK?

是否有适用于 Vista 的免费/开源工具,可以显示在一段时间内最常使用哪些文件以减少猜测?

【问题讨论】:

PS - 是的,这一切都可以通过迁移到 64 位操作系统来解决,但目前这不是一个可行的选择。 【参考方案1】:

这就是我所做的

移至 Ramdisk:

JDK(删除了一些不必要的文件,例如demos、src.zip) Eclipse 插件目录 SpringSource 工作目录 SpringSource 库目录

有一个巧妙的技巧可以让您将文件夹(或相关的文件)移动到虚拟磁盘,而无需对配置进行任何更改。

    将文件夹复制到 Ramdisk 重命名原始文件夹(我在末尾添加了-COPY) 使用 mklink /J 命令从磁盘上重命名目录之前所在的位置创建链接到您在 Ramdisk 上复制它的位置

例如:

cd C:\Dev\Apps
Xcopy jdk R:\jdk\ /s
ren jdk jdk-COPY
mklink /J jdk R:\jdk

我选择的 Ramdisk 有一个选项可以在系统关闭时保持状态(假设没有崩溃)。我选择只将相对静态的文件移动到 Ramdisk 上,所以一旦我很好地重新启动,我应该总是找到我的 Ramdisk 处于我需要的状态。

在 Vista 之前的机器上,您可以用 SysInternals 中的 junction 替换 mklink。

【讨论】:

也许它也可以与 wiki.eclipse.org/Eclipse.ini#Specifying_the_JVM 一起使用,然后在 Windows -> Preferences -> Java -> Compiler 中调整 jre 的路径 感谢您的指导。它真的帮助我加快了我的 Eclipse。唯一的问题是,每当我重新启动机器时,我都会重做所有这些步骤。有没有办法在重新启动或关闭时创建持久性 RAM 磁盘。我正在使用 Imdisk 在我的机器上创建一个 Ramdisk。 @HimanshuYadav:Primo Ramdisk 是一个 ramdisk 产品,可以将你的 RAM 磁盘持久化到硬盘上。 @HimanshuYadav:另一个想法...如果您在硬盘上保留 -COPY 版本的目录,您可以编写一个批处理文件,在启动时将相应的目录复制到 RAM 磁盘。这将允许您使用 Imdisk。不过,我真的很喜欢 Primo。不是很贵而且很灵活。 @andrejs82:这取决于太多因素,请给出具体答案。硬盘越慢,性能增益就越好。请注意,您可能会发现一些第三方磁盘缓存解决方案提供了类似的性能提升,但设置起来要简单得多。我在一台较旧的笔记本电脑上使用 Primo Cache,它很有帮助。【参考方案2】:

您可以尝试将 Eclipse 工作区移动到 ram 磁盘中。我很确定 javac 和 Eclipse 编译器都没有使用任何临时文件,所以它直接从 *.java 文件到 *.class 文件,并将资源文件从源位置复制到目标文件夹。

您可能要考虑的另一种选择是使用固态驱动器 (SSD)。在从磁盘大量读取和写入文件的许多领域,您将看到显着的性能改进。

【讨论】:

我担心将工作空间移动到 ram 磁盘是在发生中断时可能会丢失工作。迁移到 SSD 目前不是一种选择,但我们正在展望未来(可能与我们迁移到 64 位操作系统的同一时间 :-) 您可以通过将工作区代码置于版本控制之下来处理丢失的工作。 Subversion 或 Git 之类的东西可以让您快速将更改推送到持久存储。【参考方案3】:

我正在使用 SoftPerfect RAM Disk 软件。我在上面安装了 JDK、Eclipse、Maven、Gradle 和 Ant。我的工作区、我的开发 git 存储库和本地 Maven 存储库(所有下载的依赖项)也在 RAM 驱动器上。我还在 RAM 驱动器上创建了一个“用户主”目录,并将 eclipse.ini 更改为指向这个新的“用户主”目录。性能显着提高,Eclipse 现在启动时间不到 10 秒。我在这里记录了我的方法:

http://www.whizu.org/articles/how-to-install-eclipse-on-a-ramdrive.whizu

【讨论】:

【参考方案4】:

我不认为将 JDK 和 plugins 文件夹移动到 ramdisk 对这种情况是一个很好的解决方案,因为大多数时候这些 IO 不是 eclipse 的瓶颈。我尝试了您的解决方案,发现应该将 workspace.metadata 文件夹移动到 ramdisk,这可以帮助构建和执行速度。如果可能,您应该将所有工作区文件夹移动到 ramdisk 下,并使用一些版本控制来确保数据安全。祝你好运。

【讨论】:

原来移动 JDK 和插件对我来说有很大的不同...另一方面,我会非常担心将我的工作区移动到 RAM 磁盘上。一次崩溃或停电可能会抹去大量工作。

以上是关于为 Eclipse 开发优化 Ramdisk 的使用的主要内容,如果未能解决你的问题,请参考以下文章

AndroidStudio 与Eclipse快捷键对比

嵌入式Linux开发学习rootfs通过ramdisk挂载技巧

嵌入式Linux开发学习rootfs通过ramdisk挂载技巧

从ramdisk根文件系统启动Linux成功

怎么把内存划分为多个ramdisk(别人的经验)

从ramdisk根文件系统启动Linux 二