欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA进程空间

程序员文章站 2022-07-14 16:59:55
...
<div class="quote_title">cttnbcj 写道</div>
<div class="quote_div">
<div class="quote_title">JonathanWang 写道</div>
<div class="quote_div">
<div class="quote_title">cttnbcj 写道</div>
<div class="quote_div">
<div class="quote_title">ray_linn 写道</div>
<div class="quote_div">
<div class="quote_title">cttnbcj 写道</div>
<div class="quote_div">静态针对的是jdk 假如分配了100M,调用静态类不需要jdk额外增加内存,但是jdk,只是封装了console,调用的黑黑的框,除非是jdk静态类是操作桌面屏幕直接在JDK中实现的,否则肯定要去操作系统层面,内存没了,你到系统层面调用,马上卡死。</div>
<br><br>内存耗尽也是只是Java本身进程的内存耗尽好不啦,在4G的进程空间里,你申请个2G的数组,Java的内存就会耗尽,但不等于物理内存耗尽好不。<br><br>牵涉到系统调用,都是在下2G内存空间里,这部分是保留的,再怎么也耗不到这里。</div>
<br><br>明显你对操作系统实现和硬件方面的编程不了解。<br>基本系统是分应用和内核  一般情况: <span style="color: darkred;">虚拟空间2G给内核,2G给应用</span>。但是真实内存一般:32位系统是3G多点。<br>内核里面内存又分可换和非可换内存空间,非可换永久在内存中,除非手动释放,换页的在不用时会到硬盘页文件中,调用时候调入内存里。<br>内存耗尽也是只是Java本身进程的内存耗尽好不啦   我想你应该指的是,JAVA进程本身地址空间全部被分配,不能再分配新地址空间,导致JDK不能在申请内存和变量,数组,字符等。 然后调用API到系统层面时候,内核中物理内存还有空闲的。<br>可看清题目机子内存基本满了,这句话指的是 真实内存基本满了<br><br><br><br>
</div>
<br><br>大侠,首先,<span style="color: red;">32位系统的最大寻址空间是4G</span>,这个可以自己算一下啦。估计您是受Windows毒害太深。<br>PS:是Win 7以前</div>
<br>大虾,请看清我的红色字。谢谢<br><br>
</div>
<p>处理器架构提供的部分可寻址范围由 OS 本身占用,提供给操作系统内核以及 C 运行时(对于使用 C 或者 C++ 编写的 JVM
而言)。OS 和 C 运行时占用的内存数量取决于所用的 OS,但通常数量较大:Windows 默认占用的内存是
2GB。剩余的可寻址空间(用术语来表示就是<em>用户空间</em>)就是可供运行的实际进程使用的内存。
</p>
<p>对于 Java 应用程序,用户空间是 Java 进程占用的内存,实际上包含两个池:Java 堆和<em>本机</em>(非 Java)堆。Java 堆的大小由 JVM 的 Java 堆设置控制:<code>-Xms</code> 和 <code>-Xmx</code> 分别设置最小和最大 Java 堆。在按照最大的大小设置分配了 Java 堆之后,剩下的用户空间就是本机堆。图 1 展示了一个 32 位 Java 进程的内存布局:
</p>
<p>

<br><a name="fig1"><strong>图 1. 一个 32 位 Java 进程的内存布局示例</strong></a><br><img src="https://www.ibm.com/developerworks/cn/java/j-codetoheap/figure1.gif" alt="一个 32 位 Java 进程的内存布局示例视图" width="577" height="96"></p>
<p>在 <a href="https://www.ibm.com/developerworks/cn/java/j-codetoheap/#fig1">图 1</a> 中,可寻址范围总共有 4GB,OS 和 C 运行时大约占用了其中的 1GB,Java 堆占用了将近 2GB,本机堆占用了其他部分。请注意,JVM 本身也要占用内存,就像 OS 内核和 C 运行时一样,而 JVM 占用的内存是本机堆的子集。
</p>
<p><br><br><br></p>
<p> </p>