【发布时间】:2015-02-23 22:06:09
【问题描述】:
从这个discussion我需要编写一个程序来知道问题的答案:“如果有比int的最大值更多的对象,那么jvm将什么分配给一个对象的地址?”,
在 eclipse.ini 中使用以下设置
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20131025-1931
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms6144m
-Xmx6144m
及以下程序,
class SubClass {
int x = 4;
int getX(){
return x;
}
}
public class Dummy2 {
public static void main(String[] args){
SubClass obj[] = null;
obj = new SubClass[Integer.MAX_VALUE];
for(int i = 0; i < Integer.MAX_VALUE; i++){
obj[i] = new SubClass();
}
SubClass objRef1 = new SubClass();
System.out.println(objRef1);
System.out.println(objRef1.hashCode());
SubClass objRef2 = new SubClass();
System.out.println(objRef2);
System.out.println(objRef2.hashCode());
}
}
出现错误:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
我的目标是查看对象地址的值以及为最后两个对象生成的哈希码。
我使用在 64 位 Windows 7 操作系统上运行的 64 位 jvm,它为每个本机用户级进程提供 8TB 的虚拟空间。硬件有 8GB RAM 芯片。
请帮帮我!!
【问题讨论】:
-
可能不相关,但您可能应该在 程序 的 VM 参数(即运行配置)中指定最大堆大小,而不是在 eclipse 文件中。跨度>
-
“对象的内部地址”是什么意思?
-
@RealSkeptic 没什么意思,我删掉了那个词):现在,你能帮我回答吗?
标签: java memory-management jvm heap-memory