目的

把 JDK 放到内存里是个好想法。可以加速 JDK 的调用。而且,我的电脑是固态硬盘,频繁的读写硬盘,会减少固态寿命。所以,我要把 JDK 扔到内存里。不过,固态其实已经很快了,即使把 JDK 放到内存里,速度的提升也感觉不到。

安装工具

# 安装 squashfs-tools
sudo apt install squashfs-tools

# 安装 openjdk
sudo apt install openjdk-8-jdk openjdk-8-jre

squashfs-tools 这个工具可以创建 squash 文件系统,将整个文件系统或者某个单一的目录压缩在一起, 存放在某个设备, 某个分区或者普通的文件中。

我们要做的就是,把 openjdk 的目录压缩到一个文件里,然后挂载到内存里。感觉就是把 JDK 打个包,变成镜像文件,然后挂在到内存。

做些准备

注意:由于 openjdk 的目录里 docs、src.zip 是链接符号,所以我们要先把他们替换成真正的文件。

# 把整个jdk目录复制到主目录下。
sudo cp -r /usr/lib/jvm/java-8-openjdk-amd64 ~/

# 替换文件链接符号为真正的文件
sudo rm -rf ~/java-8-openjdk-amd64/docs ~/java-8-openjdk-amd64/drc.zip
sudo cp -r /usr/share/doc/openjdk-8-jre-headless/ ~/java-8-openjdk-amd64/docs
sudo cp /usr/lib/jvm/openjdk-8/src.zip ~/java-8-openjdk-amd64/src.zip

创建 JDK 镜像

# 创建 squash 文件系统文件
sudo mksquashfs ~/java-8-openjdk-amd64 ~/openjdk-8.sqsh

# 移动到 /usr/lib/jvm 下
sudo mv ~/openjdk-8.sqsh /usr/lib/jvm/

挂载

# 创建目录以供挂载
sudo mkdir /media/memory-jdk-8

修改 /etc/fstab 文件,添加类似以下的一行:

/usr/lib/jvm/openjdk-8.sqsh  /media/memory-jdk-8  squashfs  ro,defaults,loop  0 0

完成。