Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse内存分析器,但始终显示发生了内部错误?_Java_Eclipse_Memory - Fatal编程技术网

Java Eclipse内存分析器,但始终显示发生了内部错误?

Java Eclipse内存分析器,但始终显示发生了内部错误?,java,eclipse,memory,Java,Eclipse,Memory,但当我通过Eclipse内存分析器打开head dump java_pid2584.hprof时,总会有这样一条消息: java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid2584.hprof ... Heap dump file created [106948719 bytes in 4.213 secs] Exception in thread "main" java.lang.OutOfMemoryErro

但当我通过Eclipse内存分析器打开head dump java_pid2584.hprof时,总会有这样一条消息:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid2584.hprof ...
Heap dump file created [106948719 bytes in 4.213 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at Main.main(Main.java:15)

您可以降低应用程序内存限制,然后再次进行转储。Eclipse内存分析器将转储文件放入内存—我怀疑您的Eclipse的内存少于应用程序的限制


您也可以反其道而行之,增加Eclipse的内存限制,但如果您的应用程序在服务器上运行,则很难匹配内存大小。

问题在于Eclipse内存分析器没有足够的堆空间来打开堆转储文件

您可以按如下方式解决此问题:

  • 打开
    MemoryAnalyzer.ini
    文件

  • 将默认的
    -Xmx1024m
    更改为更大的尺寸


  • 发生内部错误。Java堆空间

    回答:去你的项目工作区 打开。设置文件夹 删除.setting文件夹的所有文件。 在编译之后 现在没有像堆空间这样的错误
    享受:)

    我在这里也尝试了所有的解决方案,但仍然得到相同的错误以及eclipse由于错误或未知的文件类型/编辑器关联而试图将.hprof文件作为文本文件打开的原因

    解决方案:右键单击该文件,选择OpenWith,然后选择Others,然后选择Eclipse内存分析器


    使用700MB转储,在大约600M的eclipse堆上使用2G转储。

    注意,在OS X上,要增加分配给MAT的内存,需要右键单击
    MAT.app
    并显示包内容。
    MemoryAnalyzer.ini
    文件位于
    /Contents/Eclipse

    下。如果从Eclipse使用内存分析器,则编辑Eclipse.ini文件以将vm参数增加到-Xmx1024m或更高。这对我有用。 在OS X 11.5(El Cap)上修改
    MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini
    不起作用!这是因为它在另一个地方查找
    MemoryAnalyzer.ini

    在我的计算机上,它正在查找:

    MemoryAnalyzer.app/Contents/Eclipse/MemoryAnalyzer.ini
    但真正的.ini文件是:
    MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini

    为了使更改生效,请将现有的
    .ini
    文件复制到新位置

    要查找MemoryanAnalyzer查找ini文件的位置,可以运行:

    An internal error occurred during: 
    "Parsing heap dump from **\java_pid6564.hprof'".Java heap space
    

    针对MAC OS X El Capitan中Eclipse中内存分析器插件的相同问题的解决方案

    我也面临同样的问题,但使用eclipse插件时,我在Applications文件夹中没有任何内存分析器应用程序。对我有效的解决方案是:

  • 右键单击Eclipse图标并选择ShowPackageContent
  • 转到内容>Eclipse
  • 打开Eclipse.ini
  • 将值-Xmx1024m更改为-Xmx2048m
  • 重新启动Eclipse

  • 如果您正在使用Mac,请尝试在mat.app“folder”中使用-data选项运行可执行文件,通过该选项可以指定可写路径:

    sudo su
    cd ...MemoryAnalyzer.app/Contents/MacOS/
    dtruss ./MemoryAnalyzer 2>&1 | grep ini
    
    cd mat.app/Contents/MacOS
    /内存分析器-数据
    
    正如其他人所建议的,其两步简单流程:-

  • 从MAT安装目录中打开MemoryAnalyzer.ini文件

  • 将默认值-Xmx1024m更改为更大的大小,例如,如果必须分析4GB堆转储,则可以将-Xmx1024m替换为-Xmx5g或-Xmx6g

  • 有关更多详细信息,请参阅:-

    根据我的经验,添加MemoryAnalyzer.ini,将Xms和Xmx最大化为您的装备可能性。G1GC速度更快,需要-XX:-UsegCoveredLimit,因为gc使用率可能会很高且很耗时,而-XX:+UseStringDuplication可能是消耗更少内存的关键

    cd mat.app/Contents/MacOS
    ./MemoryAnalyzer -data <writable_path>
    

    在启动Eclipse时,您是否尝试增加
    -Xmx
    参数?如果您在指定-Xmx时“没有足够的RAM”,那么会有一些想法当我分析内存错误的努力失败时,我笑得很厉害,因为工具没有足够的内存。Hillary.MAT的内存中没有完整的
    .hprof
    !我有3GB大的内存转储,我可以在我的1G Eclipse实例中进行分析…真的吗?但是当我打开200M.hprof文件时,总是出现错误。我的解决方法与Codeisee完全相同。MAT在分析大文件时总是有问题。请看:。“嗯,分析大堆转储也可能需要更多堆空间。给它一些内存”谢谢你的回答,但我找不到MemoryAnalyzer.ini文件,位置在哪里?它位于默认目录中。但是如果你使用eclipse插件,您必须放大eclipse配置的Xmx1024m,但当我使用eclipse.exe-vmargs-Xverify:none-XX:+UseParallelGC-XX:PermSize=100M-Xms256M-Xmx600M-Duser.language=en放大内存时,问题仍然存在。我发现,当小于100M时,它可以解析.hprof文件,但当大于100m时,此方法不适用于最新版本的OS X(El Cap)和MemoryAnalzyer(1.5.0),请参阅下面的答案以了解解决方法。您可以显式grep for
    MemoryAnalyzer.ini
    ,因为还有一些其他的
    ini
    文件会出现并使您困惑。如果它不起作用,尝试
    /MemoryAnalyzer-vmargs-Xmx5g-XX:-在
    mat.app/Contents/MacOS/
    中使用gcoverheadlimit
    是的,如果在eclipse中安装了mat插件,则需要根据转储文件在-Xmx下增加eclipse.ini中的内存。
    -vmargs
    -Xms8g
    -Xmx8g
    -XX:-UseGCOverheadLimit
    -XX:+UseG1GC
    -XX:+UseStringDeduplication