`
wuyafeng123
  • 浏览: 24364 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JVA 内存分配

 
阅读更多
从大的方面来讲,JVM的内存模型分为两大块:


永久区内存( Permanent space )和堆内存(heap space)。


栈内存(stack space)一般都不归在JVM内存模型中,因为栈内存属于线程级别。

每个线程都有个独立的栈内存空间。


Permanentspace里存放加载的Class类级对象如class本身,method,field等等。

heapspace主要存放对象实例和数组。

heapspace由Old Generation和New Generation组成,Old Generation存放生命周期长久的实例对象,而新的对象实例一般放在New Generation。

NewGeneration还可以再分为Eden区、和Survivor区,新的对象实例总是首先放在Eden区,Survivor区作为Eden区和Old区的缓冲,可以向Old区转移活动的对象实例。




没错,我们常见的OOM(out of memory)内存溢出异常,就是堆内存空间不足以存放新对象实例时导致。


永久区内存溢出相对少见,一般是由于需要加载海量的Class数据,超过了非堆内存的容量导致。通常出现在Web应用刚刚启动时,因此Web应用推荐使用预加载机制,方便在部署时就发现并解决该问题。


栈内存也会溢出,但是更加少见。


堆内存优化:

调整JVM启动参数-Xms -Xmx -XX:newSize -XX:MaxNewSize,如调整初始堆内存和最大对内存 -Xms256M-Xmx512M。 或者调整初始New Generation的初始内存和最大内存 -XX:newSize=128M -XX:MaxNewSize=128M。


永久区内存优化:

调整PermSize参数 如 -XX:PermSize=256M -XX:MaxPermSize=512M。


栈内存优化:

调整每个线程的栈内存容量 如 -Xss2048K



最终,一个运行中的JVM所占的内存= 堆内存 + 永久区内存 + 所有线程所占的栈内存总和 。
分享到:
评论

相关推荐

    F800JVA手机

    同时,如果设备支持Java,用户也可以找到并安装Java版本的QQ,这对于那些无法运行Android应用或者希望节省内存的用户来说是个不错的选择。Java版QQ可能体积更小,但功能可能相对有限。 Android系统的另一个特点是其...

    数据库的基础jva基础学习

    数据库的基础jva基础学习

    jva完美学习版ppt

    jva完美学习版ppt刘华英

    Jva API知识点.md

    Jva API知识点.md

    SUPINFO_3JVA-SupSMS:SUPINFO 3JVA项目SupSMS

    【标题】"SUPINFO_3JVA-SupSMS"指的是SUPINFO机构的3JVA项目中的一个名为SupSMS的部分。这个项目可能是一个基于Java技术的短信管理或通信系统,用于处理与短信服务相关的功能。 【描述】"3JVA-SupSMS SUPINFO 3JVA...

    《Jva程序设计》课程标准.doc

    《Jva程序设计》课程标准.doc

    jva编程百例

    实例40 压缩和解压文件 实例45 使用SMTP协议发送邮件 实例52 使用ODBC连接数据库 实例62 多线程 实例77 应用JAR包 实例87 JSP+BEAN的应用 实例99 连接数据库 实例100 上传文件

    4JVA_SupRails_WS:带有SOAP和Rest Web服务的简单JEE应用程序

    4JVA_SupRails_WS 具有SOAP和Rest Web服务的简单JEE应用程序。 带有GlassFish Server 3.1.2的NetBeans 7.4(不适用于GlassFish 4.0) 如何 : 1-复制回购2-使用NetBeans打开项目(与Eclipse不同,无需导入,只需...

    jva俄罗斯方块源代码

    java编写的经典俄罗斯方块游戏,可以拿来学习学习

    Wiley.-.Java.in.60.Minutes.a.Day.(19.Lectures,.789.pages).rar

    18. **Java内存管理**:讨论Java的垃圾回收机制,理解堆内存和栈内存的区别,以及如何优化内存使用。 19. **性能优化与调试**:学习分析和优化Java程序性能的方法,使用JVisualVM等工具进行监控和调试。 通过每天...

    Java-pictures-rotating-example.rar_jva pictures

    在Java编程语言中,处理图像是一项常见的任务,其中包括图片的加载、显示、编辑以及保存等操作。本示例“Java-pictures-rotating-example”关注的是如何旋转图片,这是一个非常实用的功能,尤其在图片处理软件或者...

    4本高清中文版Java性能优化经典书籍

    - **内存管理**:理解内存分配、垃圾收集机制,避免内存泄漏。 - **并发编程**:合理使用线程,避免过度竞争和死锁,利用并发库提升多核处理器利用率。 - **代码效率**:编写高效代码,避免不必要的计算和资源浪费,...

    企业门户新闻网JVA+数据库SQL Server 2000

    企业门户新闻网使用说明书 配置源程序 附加数据库SQL Server 2000 ... (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/...

    手机酷狗Jva下载(软件)

    不错的软件,值得下载的挺好用,不过可能下的时候有点卡,大家多看看啦。。。哈哈。。。。

    最新数据结构(Jva版)-线性表的实现与应用完整版.pdf

    顺序表是一种静态存储结构,它在内存中占用一段连续的空间,元素按顺序依次存储。在Java中,可以通过数组来实现顺序表。接口LList定义了顺序表的基本操作,如isEmpty()用于检查表是否为空,size()返回表的长度,get...

    Java 200题详解.doc

    - Java虚拟机负责运行Java程序,理解内存模型、垃圾回收和性能优化对Java开发者至关重要。 通过深入学习这些知识点,Java程序员能够更好地应对面试,提升技能,并解决实际工作中遇到的问题。无论是初学者还是经验...

    jva讯友网络相册(源码).zip

    项目说明:项目通俗易懂,使读者快速了解项目,了解 Spring 核心原理。在手写Spring 源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程,保留核心功能,例如:IOC、AOP、Bean生命周期、上下文、作用域、...

    Jva面试宝典

    此文档适合没有开发经验的小白们使用。

    由韩国出版的J2SE 5.0版的JAVA 2教材源代码

    Java 2平台,标准版(J2SE)是Java编程语言的核心版本,它为开发桌面应用、服务器端软件和网络应用程序提供了基础。J2SE 5.0是这个平台的一个重要里程碑,它引入了许多关键的新特性,提升了Java的效率、可读性和可...

Global site tag (gtag.js) - Google Analytics