Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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
如何确定Linux上多进程的JVM内存占用_Linux_Memory_Jvm_Shared_Footprint - Fatal编程技术网

如何确定Linux上多进程的JVM内存占用

如何确定Linux上多进程的JVM内存占用,linux,memory,jvm,shared,footprint,Linux,Memory,Jvm,Shared,Footprint,我试图量化一个小型java应用程序在内存占用方面的差异,该应用程序执行相同的进程多线程与多进程 我所有的测试都是在Linux下进行的 运行多线程时,确定每个线程的总体占用空间和额外开销相对容易。根据pmap,在运行单线程进程时,JVM占用的空间很大(200-300M虚拟空间)。如果我运行同一个应用程序的多个副本,我会看到内存占用x N,并且进程之间不会共享任何java代码 我被告知,由于Java代码是字节码,而不是可执行的,所以它不会像使用C二进制文件那样在进程之间共享代码。然而,我后来被告知,

我试图量化一个小型java应用程序在内存占用方面的差异,该应用程序执行相同的进程多线程与多进程

我所有的测试都是在Linux下进行的

运行多线程时,确定每个线程的总体占用空间和额外开销相对容易。根据pmap,在运行单线程进程时,JVM占用的空间很大(200-300M虚拟空间)。如果我运行同一个应用程序的多个副本,我会看到内存占用x N,并且进程之间不会共享任何java代码

我被告知,由于Java代码是字节码,而不是可执行的,所以它不会像使用C二进制文件那样在进程之间共享代码。然而,我后来被告知,它可能会使用写上复制技术来实现同样的目标。如果我使用pmap,它只会告诉我流程的占用空间,而不会指出有多少可以与其他流程共享


所以问题是,我如何确定进程之间通过写时拷贝共享了多少数据?

在正确配置的非嵌入式linux系统上,为什么要关心内存占用

如果你有答案会有什么不同

只有当一个进程是另一个进程的正确祖先时,数据才会在进程之间共享。
它将进一步由java程序的内存布局和页面中的数据决定。所有这些都可能随着版本的变化而变化