java内存分配空间大小,JVM内存模型及内存分配过程

一、JVM内存模型

JVM主要管理两种类型内存:堆(Heap)和非堆(Permanent区域)。

1、Heap是运行时数据区域,所有类实例和数组的内存均从此处分配。Heap区分两大块,一块是 Young Generation,另一块是Old Generation:

1)在Young Generation中,有一个叫Eden Space的空间,主要是用来存放新生的对象,还有两个Survivor Spaces(from,to),它们的大小总是一样,它们用来存放每次垃圾回收后存活下来的对象。

2)在Old Generation中,主要存放应用程序中生命周期长的内存对象。

2、Permanent区:

Permanent Generation,主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等。永久带基本不参与垃圾回收。Permanent generation 不是Heap的一部。

.

41431554_1.png

二、内存大小

1、Heap内存分配

JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;

JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。

默认空余堆内存小于40%时,JVM 就会增大堆直到-Xmx 的最大限制,可以由 -XX:MinHeapFreeRatio 指定。

默认空余堆内存大于70%时,JVM 会减少堆直到-Xms的最小限制,可以由 -XX:MaxHeapFreeRatio 指定,

2、Permanent区域内存分配

JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;

由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

三、JVM内存分配过程

1、JVM 会试图为相关Java对象在Eden中初始化一块内存区域。

2、当Eden空间足够时,内存申请结束;否则到下一步。

3、JVM 试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收)。释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区。

4、Survivor区被用来作为Eden及Old的中间交换区域,当Old区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区。

5、当Old区空间不够时,JVM 会在Old区进行完全的垃圾收集(0级)。

6、完全垃圾收集后,若Survivor及Old区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory”错误。

41431554_2.png

参考:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python自动翻译pdf_在Python中自动执行PDF

python自动翻译pdfModules used: 使用的模块: In this script, we will use PyPDF2 module which will provide us various functions such as to extract the data and read the pdf file and split the file and write a new file. 在此脚本中,我们将…

设置DVWA出现Could not connect to the MySQL service. Please check the config的解决方法,默认登录账号

按照这个路径,找到config.inc.php文件,打开 找到下面三个语句 db_server:一般填127.0.0.1,如果修改了mysql的端口号,要在后面加上修改后的端口号,默认为3306 db_user:自己mysql数据库的用户名 db_password&#xff1…

关于用户角色权限的一点想法(1) 选择自 biggie 的 Blog

原文(http://dev.csdn.net/article/19/19751.shtm) 前言:权限往往是一个极其复杂的问题,但也可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。针对不同的应用,需…

使用anconada 的conda更换环境

打开命令行界面。cmd,直接打开 查看有些环境 conda env list 我这里有两个环境使用指定的环境 我这里就用py27 命令:activate环境名 py27在前面,已经成功更换了退出使用某个环境 conda deactivate 前面已经没有py27,表示已经退…

php采集分页数据,如何通过php+wordpress实现分页获取数据

1.首先我们通过WordPress来搭建我们的博客网站&#xff0c;需要实现分页获取数据&#xff0c;我们需要了解一下WordPress给我们提供的api。主要是get_posts()这个api的使用方法。函数的结构大概长这么个样子&#xff1a;<?php get_posts($args); ?> &#xff0c;其中…

家纺B2C优雅100获IDG及DCM 1000万美元投资

网易科技讯 3月3日下午动静&#xff0c;家纺网上商城优雅100(uya100.com) 首创人陈腾华往日吐露&#xff0c;该公司明天不日完成了1000万美元的首轮融资&#xff0c;投资方为IDG及DCM。陈腾华以有合同约定为由拒绝流露更详细的财务细节。陈腾华说&#xff0c;这1000万美元曾经到…

手动打开和关闭windows的相关服务

winR&#xff0c;输入services.msc 找到指定的服务打开或者关闭

PetShop之ASP.NET缓存(转载)

《解剖PetShop》系列之四 四 PetShop之ASP.NET缓存 如果对微型计算机硬件系统有足够的了解&#xff0c;那么我们对于Cache这个名词一定是耳熟能详的。在CPU以及主板的芯片中&#xff0c;都引入了这种名为高速缓冲存 储器&#xff08;Cache&#xff09;的技术。因为Cache的存取速…

使用python学线性代数_最简单的神经网络简介| 使用Python的线性代数

使用python学线性代数A neural network is a powerful tool often utilized in Machine Learning because neural networks are fundamentally very mathematical. We will use our basics of Linear Algebra and NumPy to understand the foundation of Machine Learning usin…

电脑安装了mysql,但找不到mysql服务

首先找到mysql的bin文件目录&#xff0c;我的是在&#xff1a;C:\Program Files\mysql-5.7.27-winx64\bin 然后找到下图内容&#xff0c;右键以管理者身份运行 然后cd 到mysql的bin目录 在输入mysqld -install 服务就重启好了

win10安装masm32 SDK并运行一个小程序

建议在安装之前&#xff0c;先装一下notepad编辑器&#xff08;其他也行)&#xff0c;Visual C 首先我们到官网下载masm32&#xff08;http://www.masm32.com/&#xff09;&#xff0c;到了官网后&#xff0c;点击download就行了。 随便点一个就可以了。 将zip文件解压&#…

matlab figure 嵌套,操作Matlab的Figure窗口(一)

以前&#xff0c;我和很多人一样&#xff0c;总是将数据保存到mat文件中。后来突然发现&#xff0c;如果数据量不大的话&#xff0c;直接将Figure窗口中的图形保存为fig文件是更好的选择。fig文件与一般的图像文件不同&#xff0c;并不是由图像的像素构成&#xff0c;它包含了当…

c语言中fflush函数z_带有示例的C语言fflush()函数

c语言中fflush函数zC中的fflush()函数 (fflush() function in C) Prototype: 原型&#xff1a; int fflush(FILE *filename);Parameters: 参数&#xff1a; FILE *filenameReturn type: 0 or EOF 返回类型&#xff1a; 0或EOF Use of function: 使用功能&#xff1a; When …

masm32使用nmake工具

nmake.exe如果你安装了Visual C你可以在bin文件目录下找到&#xff0c;然后复制到masm32的bin目录下,如果没有安装visual C就百度下一个吧&#xff01; 使nmake之前&#xff0c;我们的.obj和.res文件都创建好了,在工程建一个文件Makefile&#xff0c;不需要后缀 里面内容填&am…

SQL Server 2005 中的商务智能和数据仓库

SQL Server 2005 中的商务智能和数据仓库 发布日期&#xff1a; 2005年03月11日摘要&#xff1a;本文概述了 SQL Server 2005 Beta 2 中“商务智能”平台的增强功能。本文并非实施指南&#xff0c;而是为读者提供了关于“商务智能”平台增强功能的信息。本页内容 简介SQL Serve…

MVVM实践教程

算算&#xff0c;从事Silverlight和WPF的开发也有1年多的时间了&#xff0c;虽然时间不算长&#xff0c;虽然还没有突出的成就&#xff0c;但是感觉也还算一般。 但是&#xff0c;从头至今都没有去认真研究和使用过MVVM&#xff0c;虽然它被认为是Silverlight和WPF开发的最佳架…

32位通用寄存器ESP、EIP、EAX、EBX、ECX、EDX,在OD里操作这些寄存器

EIP&#xff1a;指向CPU下一步即将执行的指令 I EIP为00401000&#xff0c;表示&#xff0c;CPU下一步到00401000这个地址去执行&#xff0c;下一步执行push 0x0指令 ESP&#xff1a;始终指向堆栈的最顶端 现在的ESP是0012FFC4&#xff0c;现在堆栈的顶部在这个地址 EAX、EBX、…

汇编add和mov指令

汇编指令add&#xff1a; 格式&#xff1a;add 参数1&#xff0c; 参数2 功能&#xff1a;参数1和参数2相加&#xff0c;将结果赋值给参数1&#xff0c;即 &#xff1a;参数1参数1参数2 汇编指令 mov&#xff1a; 格式&#xff1a;MOV destination,source 功能&#xff1a;将源…

双层玻璃窗的功效模型matlab,数学建模:双层玻璃窗的功效,80人%的人搞不懂数学的应用价值...

原标题&#xff1a; 数学建模&#xff1a;双层玻璃窗的功效&#xff0c;80人%的人搞不懂数学的应用价值A.Einstein有一句名言&#xff1a;想象力比知识更重要&#xff0c;因为知识是有限的&#xff0c;而想象力包括世界的一切&#xff0c;推动着进步&#xff0c;并且是知识的源…

8086CPU物理地址

8086CPU有20位地址总线&#xff0c;可以传送20位地址&#xff0c;达到1MB寻址能力&#xff0c;但8086CPU内部是16位&#xff0c;表现出来的寻址能力只有64kb。 8086CPU采用一种在内部用用两个16位地址合成的方法来形成一个20位的物理地址。 CPU中的相关部件提供两个16位地址&a…