JVM内存区域配置

堆内存:新域+旧域

设置堆内存初始化大小

java -Xms128m  设置堆内存初始化大小128MB

设置堆内存最大大小

java -Xmx256m  设置堆内存最大256MB

通常将堆内存的初始化大小与最大大小设置成一样,这样就避免了在内存不足的时候动态增加堆内存的大小



设置新域大小

java -Xms256m -Xmx256m -Xmn64m 设置堆内存初始值与最大值为256MB,新域初始值与最大值大小64MB

java -Xms256m -Xmx256m -XX:NewSize=64m -XX:MaxNewSize=64m 与上一段设置代码等效

还可以通过设置新域/旧域 的比例值来设置新域与旧域的大小

java -Xms256m -Xmx256m -XX:NewRatio=3  也就是说,新域/旧域 = 3



永久域:永久域默认大小为4MB,程序运行时,JVM会自动调整永久域的大小,每次调整时,都会对堆进行一次完整的垃圾回收

java -XX:MaxPerSize=64m  设置永久域大小

java -Xms512m -Xmx512 -Xmn126m -XX:PermSize=32m -XX:MaxPermSize=64m  分别设置了堆内存的初始值 最大值 新域大小 永久域初始大小 永久域最大值

时间: 2024-11-10 12:04:51

JVM内存区域配置的相关文章

JVM内存区域参数配置

转自:https://www.jianshu.com/p/5946c0a414b5 需要提前了解的知识点: JVM内存模型 JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图 JVM内存区域逻辑图 从图中我们大概了解JVM相关的内存区域. JVM内存包括区域 Heap(堆区) New Generation(新生代) Eden Survivor From Survivor To Old Generation(老年代) 方法区 Permanent Generation(持久代) Stack(栈区)

JVM基础--JVM内存区域模型

一提到Java,我们第一直觉就是Java语言.其实Java不仅仅是一种编程语言,它还是由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并且广泛应用于嵌入式系统/移动终端/企业服务器/大型机等场合.从广义上讲,类似于JRuby等运行在JVM上的语言及其相关的程序都属于Java技术体系中的一员.但是,一般咱们从传统上理解,sun官方所定义的Java技术体系包括:Java程序设计语言/各个平台上的JVM虚拟机/class文件/Java API类库/还

【Java高级】JVM内存区域模型和加载过程

JVM内存区域模型 1.方法区 也称"永久代" ."非堆",  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 运行时常量池:是方法区的一部分,Class文件中除了有类的版本.字段.方法.接口等描述信息外,还有一项信息是常量池,用于存放编译器生成的各种符号引用,这部分内容将在类加载后放到方法区的运行时常量池中.

深入理解JVM之JVM内存区域与内存分配

深入理解JVM之JVM内存区域与内存分配 在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处: http://www.cnblogs.com/hellocsl/p/3969768.html?utm_source=tuicool&utm_medium=referral 看了此博客后,发现应该去深入学习下jvm的内存模型,就是去认真学习下<深入理解Java虚拟机>,其内容可能会<

【转】理解JVM内存区域

引言 对于C++程序员,内存分配与回收的处理一直是令人头疼的问题.Java由于自身的自动内存管理机制,使得管理内存变得非常轻松,不容易出现内存泄漏,溢出的问题. 不容易不代表不会出现问题,一旦内存泄漏或溢出的情况发生,调试起来会变得非常困难.这就要求我们对虚拟机的内存区域有深入的理解.最终能够判断内存方面的异常发生时,具体在JVM中的位置. 内存区域 JVM运行时,首先需要类加载器(ClassLoader) 加载所需类的字节码,加载完毕交由执行引擎执行,执行过程中需要一段空间来存储数据(类比CP

一、JVM内存区域组成

一.JVM内存区域组成  java把内存分四种:  1.栈区(stack segment)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放内存资源  2.堆区(heap segment) — 一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收  3.静态区(data segment)— 存放全局变量,静态变量和字符串常量,不释放  4.代码区(code segment)— 存放程序中方法的二进

jvm系列 (一) ---jvm内存区域与溢出

jvm内存区域与溢出 为什么学习jvm 木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握. 当一个系统出现内存溢出,内存泄露的时候,因为你懂jvm知识,可以更加快速定位错误,可以通过参数去合理设置各内存区域的内存容量. 因为你对jvm的认识,写代码的时候会潜意识地让你注意代码质量,可能你会说是那是小小的性能提升,但是量变会导致质变的. jvm内存区域 jvm内存划分 方法区 虚拟机栈 本地方法栈 堆 程序计数器 程序计数器 当前线程所执行的

JVM内存区域模型

一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” .“非堆” ,"perm",  它用于存储虚拟机加载的类信息.常量.静态变量.是各个线程共享的内存区域.默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小. 类太多有可能撑爆永久区:如加入JVM参数:-XX:PermSize=10M -XX:MaxPermSize=10M,运行后会报如下异常: Exception in

JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释

http://blog.csdn.net/zhushuai1221/article/details/51027024 JVM内存区域划分Eden Space.Survivor Space.Tenured Gen,Perm Gen解释 以下内容转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29632145&id=4616836 jvm区域总体分两类,heap区和非heap区.heap区又分:Eden Space(伊甸园)