我想知道JVM是否对硬盘写入/读取有影响?
我知道 JVM 可以控制为进程分配的堆内存。例如,在 shell 中,我这样做是为了设置分配的堆内存:
java -Xms512M -Xmx1024M -jar my_java_program.jar
那么,是否可以在硬盘(IO)上设置最大或最小写入/读取速度?
感谢
编辑 :
我已经完成了一个不断写入文本文件的 java 程序。我的程序具有以下架构:
public class Generator {
public static void main(String[] args) throws Exception {
// Variables initialization ...
// Loading in RAM some data to generate my text files
while(true){
// Writing the file
BufferedOutputStream buff = new BufferedOutputStream(new FileOutputStream(new File(temporaryFolderPath, fileName)), 51200000);
buff.write((some stuff ...).getBytes());
buff.flush();
buff.close();
}
}
}
我生成该程序的可执行 JAR,并在具有 8 个 CPU 的虚拟机上执行它。我的目的是看这个程序的写入速度,所以我使用了iostat命令来检查IO磁盘传输。
一个实例的结果:
wsec/s : 大约 8000
with wsec/s :每秒写入硬盘的扇区数(不知道一个扇区的大小)
结果有 2 个实例:
wsec/s : 大约 16000
结果有 3 个实例:
毫秒/秒:32000
我的问题 :
为什么当我多次执行我的 java 程序实例时,我的写作速度会更快?或者什么可以限制一个实例的写入速度?