Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 选项是什么-J-d64“;jmap堆转储实用程序的?_Java - Fatal编程技术网

Java 选项是什么-J-d64“;jmap堆转储实用程序的?

Java 选项是什么-J-d64“;jmap堆转储实用程序的?,java,Java,手册上说 如果给定进程在64位VM上运行,则可能需要指定-J-d64选项 就这样。一些堆转储howto包含了它,没有解释 更具体地说,我试图弄清楚,如果不指定该选项,可能会破坏我的堆转储(jhat无法读取它们)。盲目的实验代价高昂,因为堆很大,系统是一个活动的系统,在操作过程中有一些特定的点需要转储。jmap的帮助消息片段: λ > jmap Usage: jmap [option] <pid> (to connect to running proce

手册上说

如果给定进程在64位VM上运行,则可能需要指定-J-d64选项

就这样。一些堆转储howto包含了它,没有解释


更具体地说,我试图弄清楚,如果不指定该选项,可能会破坏我的堆转储(jhat无法读取它们)。盲目的实验代价高昂,因为堆很大,系统是一个活动的系统,在操作过程中有一些特定的点需要转储。

jmap的帮助消息片段:

λ > jmap 
Usage:
    jmap [option] <pid>
        (to connect to running process)
    jmap [option] <executable <core>
        (to connect to a core file)
    jmap [option] [server_id@]<remote server IP or hostname>
        (to connect to remote debug server)

where <option> is one of:
    <none>               to print same info as Solaris pmap
    -heap                to print java heap summary
    ... stuff ...
    -J<flag>             to pass <flag> directly to the runtime system
λ > java
Usage: java [-options] class [args...]
           (to execute a class)
   or  java [-options] -jar jarfile [args...]
           (to execute a jar file)

where options include:
    -d32          use a 32-bit data model if available
    -d64          use a 64-bit data model if available (implies -server, only for x86_64)

因此
jmap-J-d64
实际上是告诉
jmap
启动
java-d64
,使用64位模型而不是32位

如果运行
jmap
的进程不是64位JVM,请不要传递
-J-d64
参数

编辑,因为我做了大量的
jmap
/
jhat
故障排除

当您说损坏时,您的意思是
jhat
实际上报告了损坏的堆转储吗?还是因为堆转储太大而无法读取
jhat
将尝试将整个转储加载到内存中,因此您至少需要与转储大小相同的可用内存。您可能需要指定
-Xmx
jhat
,以及
J-d64
以增加堆空间

我使用的一个更好的替代方法是,有选择地加载堆转储,而不是预加载所有内容。对于我来说,在6+GB堆转储上的性能要比
jhat
好得多