Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
';共享对象内存';vs';堆内存';-JAVA_Java_Performance_Shared Memory_Jmap_Pmap - Fatal编程技术网

';共享对象内存';vs';堆内存';-JAVA

';共享对象内存';vs';堆内存';-JAVA,java,performance,shared-memory,jmap,pmap,Java,Performance,Shared Memory,Jmap,Pmap,Java中“共享对象内存”和“堆内存”的区别是什么。“共享对象内存”是“堆内存”的超集吗 这个问题的来源是jmap的文档。它提供了打印“共享对象内存”和“堆内存”的不同选项。Java内存(最多Java 8)由3部分组成: 堆内存 非堆内存(PermGen) 其他内存(JVM自己的结构) 所有类实例的内存都是从堆中分配的。 非堆内存主要由类加载器用来存储与类相关的数据 有关共享对象的一些详细信息如下:。根据我目前的分析: 默认选项将打印所有内存信息,包括: 堆内存 烫发基因 其他内存(包括JNI

Java中“共享对象内存”和“堆内存”的区别是什么。“共享对象内存”是“堆内存”的超集吗

这个问题的来源是jmap的文档。它提供了打印“共享对象内存”和“堆内存”的不同选项。

Java内存(最多Java 8)由3部分组成:

  • 堆内存
  • 非堆内存(PermGen)
  • 其他内存(JVM自己的结构)
  • 所有类实例的内存都是从堆中分配的。 非堆内存主要由类加载器用来存储与类相关的数据


    有关共享对象的一些详细信息如下:。

    根据我目前的分析:

    默认选项将打印所有内存信息,包括:

    • 堆内存
    • 烫发基因
    • 其他内存(包括JNI、堆栈空间等)
    该分析基于以下内容:

    在JDK文档中提到,默认选项(即“共享对象内存”)类似于Solaris的pmap命令。查看pmap命令,它似乎打印了完整的内存信息


    请添加注释以验证这一理解。

    共享对象内存是java库中经常访问的类的内存映射位置,这样可以比从rt.jar加载更快地加载它们。这包括许多常用的类,如
    Comparable
    String
    Object
    等。如果请求的类文件在共享对象内存中不可用,则从rt.jar请求。它可以被认为是缓存各种java程序中经常使用的类。

    我建议您尝试运行它。jmap doc说“当没有使用任何选项时,jmap打印共享对象映射”。您能够在没有选项的情况下运行jmap吗?对我来说,它只是打印使用说明(当运行“jmap pid”时)。Jmap没有选项jnjdk6的行为就像Jmap-heapAdding,讽刺的是,在google'sharedobjectmemory'+Java上,几乎所有的链接都解释了Jmap。Sun/Oracle在“著名”工具中使用了这个术语,但忘了解释这个术语。