Java JVM针对操作系统保留内存分配
|
我在Windows 7 64bit上运行1.6.0_25 64bit。
我试图让JVM在最大内存下运行,因为我的应用程序占用大量内存...但是可悲的是...内存分配没有建立,并且Windows出现了很多Page Faults来继续带来下一组虚拟内存。
我正在运行java -Xms2G -Xmx3G测试
下面的代码是我试图将整个文件导入...,这样我就不会遇到页面错误以进行读取。
File f = new File(\"veryLARGEfile.txt\");
FileInputStream in = new FileInputStream(f);
int i = (int) f.length();
System.out.println(\"Bytes in file: \" + i);
byte[] file = new byte[i];
i = in.read(file);
System.out.println(\"Bytes read: \" + i);
使用这种方法,我可以看到在Windows任务管理器中,系统在读取文件时达到了2G的内存容量……但是一旦读取完成……内存又重新下降了!!!!
这是一个主要问题...我需要整个字节数组保留在活动内存中。
谢谢,
ey
我修改了代码以使用基本数组类型int [] []和float [] []来保存数据,而不是保留包含int和float的对象的ArrayLists。
这样做,我发现我的Java内存没有被交换(因此,我认为堆内存与此处的堆栈有所不同)[哦,我也将所有代码也更改为静态类型-我知道,非常糟糕编程风格]
我现在遇到的问题是如何处理我的HashMap ...尝试建立查找表的所有尝试都因O(n ^ 2)运行时间而失败!!!
没有找到相关结果
已邀请:
2 个回复
磐剩
盟犯涩沟都