<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>
分享到:
相关推荐
本项目“JAVA进程管理模拟”旨在通过一个图形用户界面(GUI)来直观地展示进程优先级如何影响进程的执行顺序和资源分配。下面我们将深入探讨相关知识点。 首先,我们来理解“进程”。在操作系统中,进程是程序的一...
Java进程是指在操作系统中运行的Java应用程序实例,每个进程都有自己的内存空间和独立的执行线程。在Java中,通过JVM(Java虚拟机)来执行字节码,每个JVM实例就是一个进程。理解Java进程对于性能调优、资源管理和...
### Java通过Sigar库获取进程相关信息 在Java开发过程中,有时候我们需要监控系统资源或特定进程的状态,例如CPU使用率、内存占用情况等。这在服务器性能监控、问题排查等方面尤为重要。本文将详细介绍如何使用...
在Java编程环境中,当遇到“Java进程CPU占用率高”的问题时,这通常意味着Java应用程序在执行过程中消耗了大量计算资源,可能导致系统响应变慢,甚至出现性能瓶颈。本篇文章将深入探讨这个问题,并提供相关解决方案...
在这个Java实现的“进程管理模拟”项目中,我们可以深入理解进程的基本概念,以及如何通过编程来模拟这些概念。 首先,我们要知道在操作系统中,进程是程序在执行过程中的一个实例,它拥有独立的内存空间和执行状态...
根据给定的文件信息,我们可以看到,JAVA 进程在 64 位 LINUX 下占用了巨大内存,达到 11G,已分配地址空间更是 17G。这是一个非常严重的问题,因为它可能会导致系统崩溃和性能下降。 首先,让我们来分析 HEAP 配置...
在操作系统中,进程是执行中的程序实例,每个进程都有自己的内存空间和上下文。进程调度是操作系统内核的一部分,它的主要任务是决定哪个进程应该获得CPU执行权,以及何时切换到下一个进程。常见的调度策略包括先来...
Java可以通过调用Windows API来管理Windows系统的内存,释放内存缓存,获得CPU使用率,监视系统性能,获得系统内存信息,获得磁盘空间信息和枚举进程列表。 相关知识点: * Windows内存管理机制 * 虚拟内存和页面...
每个进程都有自己的内存空间,它们独立执行,互不干扰。进程调度就是操作系统内核对这些进程进行管理的过程,通过合理分配CPU时间,使得系统性能得以优化。 Java语言作为面向对象的编程语言,非常适合实现这样的...
在Java中,多进程编程是实现并发执行任务的一种方式,不同于多线程,它涉及到创建独立的进程,每个进程都有自己独立的内存空间和系统资源。本文将深入探讨Java中如何实现多进程编程。 首先,Java提供了两种方法来...
在这个实验中,你将使用Java编写程序来模拟这些过程,可能会用到线程来表示并发的进程,用数据结构(如链表或数组)来表示内存空间,并通过特定算法实现调度和内存分配策略。通过图形界面,你可以直观地观察进程的...
进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;从应用程序进程在执行过程中向 CPU 发出的运行指令形式不同,...
Java作为一种跨平台的编程语言,提供了丰富的API来支持线程和进程的管理。本项目利用Java实现了线程和进程的模拟及管理,旨在帮助学生深入理解操作系统的工作原理。 线程是程序执行的最小单元,它共享同一进程中的...
该方法允许用户通过命令行的形式启动新的Java进程。如果执行成功,`exec()`方法会返回一个`Process`对象;如果执行失败,则会抛出一个`IOException`。 示例代码如下所示: ```java // Test_Exec.java public ...
下面我们将详细探讨如何使用`jstat`工具以及通过配置GC日志来分析和优化Java进程。 `jstat`是Java虚拟机内置的一个命令行工具,用于实时监控JVM的各种运行状态,包括垃圾回收的信息。要查看哪个进程频繁进行GC,...
Java进程间通信(IPC,Inter-Process Communication)是多进程应用程序中实现不同进程间数据交换的方式。以下是对标题和描述中涉及的知识点的详细说明: 1. **管道(Pipe)**: 管道是一种半双工通信方式,允许...
在计算机系统中,进程是程序的一次执行实例,它包含了程序的上下文信息,如内存空间、打开的文件等。而线程是进程中的执行单元,同一进程内的线程共享进程资源,但拥有独立的执行路径。JAVA语言支持多线程编程,使得...
实现Java进程间通信的关键在于,不同进程将同一物理文件的不同部分映射到各自的内存空间,通过修改映射的内存内容,可以实现数据的交换。由于MappedByteBuffer与文件内容同步,当一个进程写入数据后,另一个进程可以...
在计算机系统中,进程是正在执行的程序的实例,每个进程都有自己的内存空间和系统资源。进程管理主要关注以下几个方面: 1. **进程创建与销毁**:当用户启动一个程序时,操作系统会创建一个进程,分配必要的资源如...
在Java编程环境中,我们可以通过编写特定的代码来模拟操作系统中的进程管理。"模拟进程管理(最终强化版.java0"这个项目显然旨在帮助开发者理解和实践这一概念。 首先,让我们深入了解进程管理的基础知识。在操作...