`
liguocai2009
  • 浏览: 31280 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA进程空间

 
阅读更多
<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实现内存动态分配

    每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈。进程所创建的所有类的实例(也...

    基于Java模拟操作系统进程管理【100013013】

    内存分配可采用可变分区策略 + 最佳适应算法(或页式等其他内存分配方案,自选一种),进程创建时需为进程分配内存空间,进程终止时需要回收进程的内存空间。 程序在运行过程中能显示或打印各进程的状态及有关参数...

    JAVA上百实例源码以及开源项目

     Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和...

    java多线程编程教程

    进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来...

    基于Java实现模拟操作系统(进程、存储、设备、文件和用户)【100012402】

    1.模拟操作系统实现。一个采用多道程序设计的单用户操作系统。包括进程管理、存储管理、设备管理、文件管理和用户接口。...进程控制块包括进程标识符、主要寄存器、进程状态、阻塞原因。本系统最多容纳 10 个进程块。

    解析Java的多线程机制

    Unix操作系统环境下,应用程序可以利用fork函数创建子进程,但子进程与该应用程序进程拥有独立的地址空间、系统资源和代码执行单元,并且进程的 调度是由操作系统来完成的,使得在应用进程之间进行通信和线程协调...

    Java多线程编程指南

    这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束运行后才能...

    java开源包11

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包6

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包9

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    Java高并发精讲(云盘下载)

     线程:它是位于进程中,负责当前进程中的某个具备独立运行资格的空间。  进程是负责整个程序的运行,而线程是程序中具体的某个独立功能的运行。一个进程中至少应该有一个线程。 1.2多线程的介绍  在多任务,...

    java开源包101

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包4

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包5

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    Java多线程之基础篇(一).docx

    进程是运行在它自己的地址空间内的自包容的程序。多任务操作系统可以通过周期性地将CPU从一个进程切换到另一个进程,来实现同时运行多个(进程)程序,尽管使得每个线程看起来在其执行过程都是歇歇停停。进程被操作...

    java开源包8

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    java开源包10

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

    cse7343-courseproject:使用Processing Java对操作系统进程,PCB,队列和内存管理进行模拟

    CSE 7343课程项目 操作系统进程和资源管理 该程序是由调度程序管理的操作系统进程和队列的可视化。 它代表操作系统在执行进程,管理多个队列和管理内存时的模拟。... 最初在用户空间中没有进程,就绪队列和等待队列都

    java开源包3

    Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的...

Global site tag (gtag.js) - Google Analytics