相关疑难解决方法(0)

Windows XP上的Java最大内存

我总是能够为在32位Windows XP(Java 1.4,1.5和1.6)上运行的Java SE分配1400兆字节.

java -Xmx1400m ...
Run Code Online (Sandbox Code Playgroud)

今天我在使用Java 1.5_16和1.6.0_07的新Windows XP机器上尝试了相同的选项并得到错误:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)

通过反复试验,我可以在这台机器上分配1200兆字节.

任何想法为什么一台机器将允许1400和另一台只有1200?

编辑:该机器有4GB的RAM,大约3.5GB,Windows可以识别.

java memory windows

102
推荐指数
6
解决办法
14万
查看次数

使用Integer包装器类创建了多少个对象?

Integer i = 3; 
i = i + 1; 
Integer j = i; 
j = i + j; 
Run Code Online (Sandbox Code Playgroud)

由于上面的示例代码中的语句创建了多少个对象,为什么?是否有任何IDE可以看到创建了多少对象(可能是在调试模式下)?

java integer wrapper

59
推荐指数
4
解决办法
4009
查看次数

Windows上每个Java进程的最大内存量?

对于使用的Java进程,您可以在32位Windows上分配的最大堆大小是-Xmx多少?

我问,因为我想在OpenMap中使用ETOPO1数据,原始二进制浮点文件大约是910 MB.

java windows

24
推荐指数
1
解决办法
6万
查看次数

64位Java的最大内存

在64位平台上,可以为Java分配的最大堆空间量是多少?它是无限的吗?

java heap

19
推荐指数
2
解决办法
4万
查看次数

JRE 32位对比64位

我一直在使用Java一段时间,而我设置新开发机器的典型仪式需要从Oracle网站下载和安装最新JDK的规范.

这引发了一个不寻常的问题, does it matter if I use the 32bit or 64bit JRE bundle?

回过头来看,我之前已经安装了两个版本,而且我的普通工具链很快就插入了(Eclipse).在我的日常编程中,我不记得曾经因为我使用的是64位JRE(或针对这方面的目标是64位JRE)而不得不以不同的方式改变某些东西或思考某些东西.

根据我对64位与32位的理解 - 它实际上归结为数字如何存储在封面下...我知道这int是32位并且long是64位...与float32位相同并且double是64位 - 所以只是Java已经抽象出了这个微妙之处,并且可能一直都是"64位兼容"吗?

我确定我在这里遗漏了一些东西,除了无法在32位系统上安装64位JRE.

java x86 x86-64 jvm-hotspot

11
推荐指数
2
解决办法
2万
查看次数

无效的最大堆大小

我从另一个位置复制了一个jdk目录.从那时起,我收到以下错误消息.

Your environment has been set.
java version "1.5.0_22"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
Java HotSpot(TM) Client VM (build 1.5.0_22-b03, mixed mode, sharing)
PROPS=-Xms1024m -Xmx5096m -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl -Djava.ext.dirs=..;.;..\lib;..\classes -Dfile.encoding=UTF-8
CLASSPATH=C:\Oracle\MIDDLE~1\patch_wls1211\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\PROGRA~1\Java\JDK15~1.0_2\lib\tools.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\weblogic_sp.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\weblogic.jar;C:\Oracle\MIDDLE~1\modules\features\weblogic.server.modules_12.1.1.0.jar;C:\Oracle\MIDDLE~1\WLSERV~1.1\server\lib\webservices.jar;C:\Oracle\MIDDLE~1\modules\ORGAPA~1.1/lib/ant-all.jar;C:\Oracle\MIDDLE~1\modules\NETSFA~1.0_1/lib/ant-contrib.jar;
Invalid maximum heap size: -Xmx5096m
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)

这是否意味着我将不得不重新安装jdk,而不仅仅是复制任何安装目录?我问这个而不是自己尝试,因为这个练习必须在客户端机器上完成.

当前的机器是Windows 2008服务器,具有12GB的RAM.

jvm jdk1.5 heap-size

9
推荐指数
2
解决办法
5万
查看次数

Java JVM最大堆大小可预先保留

有很多关于堆大小的帖子和站点,但是他们都没有提到如何找出我在调用jvm时可以保留的最大可能堆大小.

任务是以最大可用堆大小xmx = max动态启动我的jvm(不需要在这里讨论这个任务的对象!).

人们会想到读取当前可用或可用的内存并将该大小用于xms和xmx.但这不起作用.

例如在64位计算机和Windows操作系统上,24GB内存,可用虚拟内存大约1.8 GB :(这些由c#确定,在执行过程中执行Java命令)

jvm推出32位!根据其他网站和帖子的说法:64位操作系统上32位JVM的最大Java堆大小应该在1.4GB以上.

[09.07.2015 08:39:39] Total physical memory MB:        24002
[09.07.2015 08:39:39] Available physical memory MB:    16115
[09.07.2015 08:39:39] Total virtual memory MB:         2047
[09.07.2015 08:39:39] Available virtual memory MB:     1810
Run Code Online (Sandbox Code Playgroud)

用以下方法调用Java程序:

java -Xms1536m -Xmx1536m myApp

导致:

无法为1572864KB对象堆保留足够的空间

同样一直到1136米,这是最大的可能!

因此我的问题:如何预先检查堆大小可能调用jvm,而不试用错误?

UDPATE:根据这些评论,我提出了另一个问题,那就是那些Pro:你们如何运行Java应用程序?

  1. 选择您检查应用程序所需的堆大约需要.并且如果该堆不可能,则让用户死于错误
  2. 尝试错误:降低堆并重新运行应用程序,直到找到有效的最大堆
  3. 使用这种秘密方式确定保证最大堆大小并顺利运行(如果是这样,请放入你的信任圈:))

我对你的答案非常好奇!

java heap jvm

5
推荐指数
1
解决办法
395
查看次数

Java堆大小:设置太大时出错

我有一个程序,基本上需要大量内存。然而,由于某种原因,当我尝试将最大堆空间设置为 1.5GB 以上时,java 给出了一个错误。也就是说,运行

java -Xmx1582m [my program]
Run Code Online (Sandbox Code Playgroud)

没关系,但是

java -Xmx1583m [my program]
Run Code Online (Sandbox Code Playgroud)

给出错误

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)

我在 Windows 命令行和 Eclipse 中都遇到了同样的错误。

这是我的系统配置:

Windows 7(64 位)

英特尔酷睿 2 四核 CPU

已安装 RAM:8.00 GB

Java版本1.6.0

奇怪的是,即使我运行的是 8 GB RAM 的 64 位操作系统,我也只能设置 1.5 GB 内存。有办法解决这个问题吗?

java heap-memory

3
推荐指数
1
解决办法
1万
查看次数

64位Java适用于小型独立应用程序

是否值得在64位Java上迁移小型独立Java应用程序(最大:100-200MB堆).有什么特别的优点; 我的观察是,它只是增加了应用程序的内存占用.

请发表您的经验/意见.

java

3
推荐指数
1
解决办法
1521
查看次数

Maven:OutofMemoryError后跟无法创建Java虚拟机

我正在尝试使用maven进行项目工作,但我遇到了与内存相关的问题.

当我运行maven时,我得到堆空间错误,我使用以下行修复

set MAVEN_OPTS="-Xmx1586m"
Run Code Online (Sandbox Code Playgroud)

在此之后,当我再次运行maven时,我没有得到堆空间错误,而是我得到了PermGen空间错误.为了解决这个问题,我使用了以下语法

set MAVEN_OPTS="-Xmx1586m -XX:MaxPermSize=512m"
Run Code Online (Sandbox Code Playgroud)

但是一旦我开始使用MaxPermSize选项,我会收到以下错误

无效的最大堆大小:-Xmx1586m -XX:MaxPermSize = 512m

无法创建Java虚拟机.

我尝试为Xmx和MaxPermSize设置不同的值组合以使控件的大小,但都是无效的.

只有当我在MAVEN_OPTS中添加MaxPermSize选项时才会出现此错误.一旦我删除该选项,我没有得到上面提到的错误,但我确实得到了PermGen错误.

有什么建议我做错了吗?

java maven-2 out-of-memory maven

3
推荐指数
2
解决办法
9203
查看次数

PipedInputStream/PipedOutputStream紧密"循环"::为什么"java.lang.OutOfMemoryError:Java堆空间"?

我正在尝试PipedInputStream并且PipedOutputStream无法理解为什么以下代码会导致Java堆耗尽问题.String创建的所有临时对象都应该是gc -ed.为什么我会得到一个OutOfMemoryError

我试图写String每1000 万个字符长的1000个对象.即使在调用时,下面的代码也会失败一半-Xmx2g.更多的痕迹:

written string #453
read string #453
written string #454
Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

......揭示了PipedInputStream只有一个String对象"落后"了PipedOutputStream.我不明白为什么垃圾收集无法回收所有必要的堆内存.

import java.io.*;
import java.util.*;


class Worker implements Runnable {

    private ObjectOutputStream oos;
    private PipedInputStream   pis;

    public Worker() throws IOException {
        this.pis = new PipedInputStream();
        this.oos = new ObjectOutputStream(new PipedOutputStream( pis ));
    }

    @Override
    public void run() {
        try { …
Run Code Online (Sandbox Code Playgroud)

java heap garbage-collection

1
推荐指数
1
解决办法
340
查看次数