问问题描述
答精选答案

是的,一般来说,每个进程是拥有自己独立的存储空间,那怕它们是同一个程序的多次执行。
但其实每个进程所占用的空间其实包含了代码段,数据段,堆栈段等。这些用途不同的存储空间是可以分别进行管理的,这也是段式内存管理的一个重要目标。这直接导致了不同的进程间可以拥有不同的数据内容(比如写字板里不同的文本),但它们可以共用一个代码段,因为这一部分不会因为运算的数据不同而有任何变化。 其实在Windows里,dll动态链接库也是这个思想,一些函数功能和它的代码部分,甚至在程序执行时并不装入内存,只有当程序运行到需要调用他们时才会被动态的真正装入内存,同时只装入内存一次,如果再有其它程序也需要调用这个dll,那么它们会共享这部分代码段,从而能有效的提高内存的使用,减少浪费。尤其是很多操作系统的底层调用,比如用于处理图形界面的显示等功能就可能被所有的图形界面程序用到,这时就可以大大提高内存的利用率。
答其他回答(1条)
-
JVM同时启动两个进程会有两个堆。每个进程都会有自己的JVM实例,每个JVM实例都会有自己的堆。堆是JVM中的一个内存区域,用于存储运行时创建的对象。每个JVM实例都会有自己的堆,这是因为每个进程都会独立运行,互相之间不会共享内存。因此,两个JVM实例启动时,就会有两个独立的堆。这样可以保证进程之间的数据独立性,避免相互干扰。
本文来自作者[海宝看看]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/gongchengkaoshi/202609/719214.html

评论列表(4条)
我是公众科技网的签约作者“海宝看看”!
希望本篇文章《jvm同时启动两个进程会有两个堆嘛》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:是的,一般来说,每个进程是拥有自己独立的存储空间,那怕它们是同一个程序的多次执行。 但其实每个进程所占用的空间其实包含了代码段,数据段,堆栈段等。这些用途不同的存储空间是可以分别进行管理的,这也是段式内存管理的一个重要目标。这直接导致了不同的进程间可以拥有不同的数据内容(比如写字板里不同的文本),但它们可以共用一个代码段,因为这一部分不会因为运算的数据不同而有任何变化。 其实在Windows里,dll动态链接库也是这个思想,一些函数功能和它的代码部分,甚至在程序执行时并不装入内存,只有当程序运行到需要调用