`
Ashton
  • 浏览: 32467 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java进程内存使用值得注意的几点

 
阅读更多
1. 当我们通过命令行启动一个Java应用时,JVM是作为一个一般的操作系统进程运行的。因此,Java运行时和其它进程一样都面临着本机处理器提供的寻址能力和操作系统提供的用户空间对内存使用的限制。
32位处理器寻址范围可达2^32即4GB, 64位处理器寻址范围可达2^64位即16exabyte,其中相当一部分寻址范围都会被操作系统内核占用。Windows默认占用的的内存是2GB,导致32位Windows下任何进程最多占用2GB内存。

进一步阅读:
http://sinewalker.wordpress.com/2007/03/04/32-bit-windows-and-jvm-virtual-memory-limit/

2. 有时会发现同样的Java应用在64位机器上运行时比在32位机器上用了更多的内存,性能也有所下降。这是因为JVM中指向对象的指针在32位下占用4个字节,在64位下要占用8个字节。
进一步阅读:
http://blog.juma.me.uk/2008/10/14/32-bit-or-64-bit-jvm-how-about-a-hybrid/
http://blog.juma.me.uk/tag/compressed-oops/
http://www.docstoc.com/docs/36747975/Improving-64-bit-Java-performance-using-Compressed-References

3. HotSpot JVM从1.6.0_14开始提供-XX:+UseCompressedOops选项改善其在64位下的表现。在java堆小于32G情况下打开该选项,JVM会将引用指针压缩至4个字节来减少内存占用。1.6.0_23之后改选项就默认打开了。
进一步阅读:
http://www.oracle.com/technetwork/java/javase/6u14-137039.html
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html

4. Java进程用到的内存重要非heap和heap两大块,通过-Xms和-Xmx设置的只是heap的大小。所以经常见到Java进程占用比-Xmx设置更多的内存就没啥奇怪了。
分享到:
评论

相关推荐

    基于共享内存的hashmap

    标题中的“基于共享内存的HashMap”指的是在多进程或多线程环境中,使用共享内存作为存储机制的哈希映射数据结构。哈希映射(HashMap)是一种常用的数据结构,它通过键值对(key-value pairs)的方式快速存取数据,...

    java 文档.md

    值得注意的是,调用`start()`并不意味着线程立即执行,它只是让线程准备好以便执行。一旦线程获得CPU资源,它就会开始执行`run()`方法。 **2.5 线程的生命周期** 线程的生命周期包括以下几个阶段: - **新建状态**...

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

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    java程序员c程序员简历模板

    Java程序员的简历应突出以下几个关键知识点: 1. **编程语言掌握**:强调对Java语言的精通,包括其语法、面向对象编程概念、异常处理、多线程和集合框架等。同时,提及对其他相关技术如JavaScript、SQL、HTML/CSS的...

    操作系统(内存管理)

    现在,大部分人的系统上并没有 4 GB 内存,即使您将 swap 也算上, 每个进程所使用的内存也肯定少于 4 GB。因此,当加载一个进程时,它会得到一个取决于某个称为 系统中断点(system break)的特定地址的初始内存...

    Java面试题基本知识点总结(2)

    ### Java面试题基本知识点总结(2) #### 数据库操作命令详解 1. **数据库删除数据的方法** 在数据库管理中,经常会遇到需要删除数据的情况。对于这些需求,SQL提供了几种不同的方法,包括`TRUNCATE`、`DELETE`...

    Core Java SE 9 for the Impatient, 2nd Edition (True PDF)(2018)

    最值得注意的是,Java SE 9加入了对原始类型流(如intStream,longStream和doubleStream)的改进支持。此外,还引入了Optional类的几个新方法,比如Optional::or,Optional::ifPresentOr,以及Stream::ofNullable等...

    Java选择题分析 (1).pdf

    值得注意的是,Java不支持指针操作,以增加安全性。 4. **构造方法**:构造方法是用于初始化新创建对象的特殊方法。每个类可以有多个构造方法,它们通过不同的参数列表进行区分。构造方法的名称必须与类名相同,且...

    Python Process多进程实现过程

    值得注意的是,当一个进程创建子进程时,子进程会继承父进程的大部分资源,包括代码、全局变量等,但拥有独立的内存空间和进程ID(PID)。这种资源共享和独立性是进程与线程的主要区别之一。线程虽然也能够实现并发...

    基于Android与JAVA的音乐在线分类管理与播放系统研究.pdf

    根据提供的文件信息,以下是对知识点的详细说明: ### Android系统框架 Android系统是基于Linux内核构建的操作系统,专门用于移动设备。Linux内核提供了操作系统所需的核心服务,包括安全、内存、进程和网络驱动...

    程序员面试之葵花宝典【java】

    在Java面试中,掌握以下几个核心知识点至关重要: 1. **面向对象的特征**: - **抽象**:抽象是将复杂问题简化,关注问题的关键部分,忽略无关细节。抽象包括过程抽象(方法)和数据抽象(类)。 - **继承**:...

    GAToracle-1.pptx

    后台进程负责数据库的后台维护工作,包括DBWn(数据写入进程),PMON(进程监控器),CKPT(检查点进程),LGWR(日志写入进程),SMON(系统监控器)等,以及可选的其他进程,如归档和恢复进程。 Oracle数据库的...

    mvnd-0.7.1-windows-amd64.zip

    使用mvnd,开发者可以期待以下几点优势: 1. **更快的构建时间**:由于使用了守护进程,避免了JVM的启动时间,以及内存和CPU资源的预热过程。 2. **并发构建**:通过并行处理模块,减少等待时间,特别是在有大量...

    ORACLE 10学习资料3

    值得注意的是,即使没有磁盘存储,一个实例也可以存在。 实例和数据库之间存在着紧密但明确的区别: - 一个数据库可以被多个实例装载和打开。 - 一个实例在同一时间点只能装载和打开一个数据库。 - 实例在其整个...

    Jconsole JDK自带的监控程序

    2. **Memory Tab**:显示JVM内存的使用情况,包括堆内存(Heap Memory)和非堆内存(Non-Heap Memory)的详细信息。堆内存细分为新生代(Young Generation)和老年代(Old Generation),每个区域的使用量、最大容量...

    数据库连接包

    虽然HSQldb在这里主要是作为驱动存在,但值得注意的是,它也可以作为一个内存数据库,适用于测试和原型开发,因为它不需要独立的服务器进程。 4. **hsqldb.jar**: 如前所述,HSQldb是一个轻量级的、完全开源的SQL...

    XWalkView下载

    使用XWalkView的步骤大致与使用原生WebView相似,但有几点需要注意的差异: 1. **添加依赖**:首先,你需要在你的项目中引入XWalkView的库文件。对于给定的文件"crosswalk-webview-23.52.562.0-arm",这可能是一个...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

Global site tag (gtag.js) - Google Analytics