java常用内存设置

Java虚拟机具有一个堆,是运行时的数据区域,所有类实例和数组内存均从此处分配。堆是在java虚拟机启动时创建的。

堆是留给开发人员用的内存区域。非堆就是JVM留给自己用的(方法区,JVM内部处理或优化所需的内存,运行时的常量池,字段方法数据等)。

JVM初始分配的内存由-Xms指定,默认为物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。

默认空余堆内存小于40%时,JVM会增大到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。

因此服务器一般设置-Xms,-Xmx相等以避免每次在GC后调整堆的大小。

JVM使用-XX:PermSize设置非堆区持久代(仅仅存在于HotSpot中的概念,最新的HotSpot中也进行
了移除)内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大的非堆内存的大小,默认是物理内存的1/4。

JVM内存限制(最大值)
32位的操作系统,处理器会控制内存空间有4G,64bit以上处理器就不会有限制

常用参数:
-Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
-Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
-Xmn   Java Heap Young区大小,增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8;
-Xss   每个线程的Stack大小,JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K;

时间: 2024-11-06 16:14:12

java常用内存设置的相关文章

Java虚拟机(JVM)中的内存设置详解

在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步. PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候被放入该区域Heap space:存放Instance. GC(Garbage Collection)应该不会对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很

JVM(java 虚拟机)内存设置

一.设置JVM内存设置 1. 设置JVM内存的参数有四个: -Xmx   Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定: -Xms   Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值: -Xmn   Java Heap Young区大小,不熟悉最好保留默认值: -Xss   每个线程的Stack大小,不熟悉最好保留默认值: 2. 如何设置JVM内存分配: (1)当在命令提

如何设置Java虚拟机内存以适应大程序的装载

Java虚拟机对于运行时的程序所占内存是有限制的,当我们的项目或者程序很大时,往往会照成内存溢出. 举个例子: public class SmallTest1 { public static void main(String[] args) { byte[] array = new byte[1024*1024*500]; } } 当定义这样一个500MB的数组时,就会造成JVM内存溢出: 而Java虚拟机默认的程序运行能得到的内存大小是随系统的,由Java的api体系结构中,点击Java: 后

JVM内存异常与常用内存参数设置总结

Java Web程序由于引入大量第三方java类库,在启动时经常会遇到内存溢出(Memory Overflow)或者内存泄漏(Memory leak)问题,导致程序启动失败. 一.OOM异常分类: OOM异常主要分为java堆溢出.虚拟机栈和本地方法栈溢出.方法区和运行时常量池溢出.本地直接内存溢出. 1. java堆溢出 java堆用于存储对象实例,只要不断的创建实例,并且GC来不及清除这些对象,那么在对象数量达到最大堆的容量后就会产生内存溢出异常.当java堆异常出现时异常栈信息"java.

jvm常用参数设置 good

1.堆的大小可以通过 -Xms 和 -Xmx 来设置,一般将他们设置为相同的大小,目的是避免在每次垃圾回收后重新调整堆的大小,比如 -Xms=2g -Xmx=2g 或者 -Xms=512m -Xmx=512m 2.年轻代大小可以通过 -Xmn 来设置,比如-Xmn=2g 或者 -Xmn512m,此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 3.年老代大小 = 堆大小 – 年轻代大小 4.持久代或者永久代大小可以通过 -XX:PermSize 和 -XX:MaxPermSize 来控

Java虚拟机内存模型及垃圾回收监控调优

Java虚拟机内存模型及垃圾回收监控调优 如果你想理解Java垃圾回收如果工作,那么理解JVM的内存模型就显的非常重要.今天我们就来看看JVM内存的各不同部分及如果监控和实现垃圾回收调优. JVM内存模型         正如你上图所看到的,JVM内存可以划分为不同的部分,广义上,JVM堆内存可以划分为两部分:年轻代和老年代(Young Generation and Old Generation) 年轻代(Young Generation) 年轻代用于存放由new所生成的对象.当年轻代空间满时,

JAVA当中内存管理与垃圾回收!

很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确实很低,一方面,Java语言采用面向对象思想,这也决定了其必然是开发效率高,执行效率低.另一方面,Java语言对程序员做了一个美好的承诺:程序员无需去管理内存,因为JVM有垃圾回收(GC),会去自动进行垃圾回收. 其实不然: 1.垃圾回收并不会按照程序员的要求,随时进行GC. 2.垃圾回收并不会及时

说说Java的内存

首先,我们来看一段程序内存溢出的代码: 1 import java.util.ArrayList; 2 import java.util.List; 3 public class TestMemoryLeak { 4 public static void main(String[] args) throws InterruptedException { 5 List<int[]> list = new ArrayList<int[]>(); 6 Runtime run = Runt

Java常用英语汇总(面试必备)

Java常用英语汇总(面试必备) abstract (关键字)             抽象 ['.bstr.kt] access                            vt.访问,存取 ['.kses]‘(n.入口,使用权) algorithm                     n.算法 ['.lg.riem] annotation                     [java]代码注释 [.n.u'tei..n] anonymous