参数的含义:
-vmargs -Xms256M -Xmx768M -Xss256k -XX:PermSize=256M
-XX:MaxPermSize=768M
-vmargs 说明后面是vm的参数
-Xms256M jvm初始分配的堆内存,默认为物理内存的1/64,可与-Xmx设置相同,防止每次垃圾回收重新分配内存
-Xmx768M jvm最大允许分配的堆内存,默认为物理内存1/4
-Xss256k 每个线程的堆栈大小,jdk 1.5以后每个线程堆栈默认为1M
-XX:PermSize=256M jvm初始分配的非堆内存,默认为物理内存的1/64
-XX:MaxPermSize=768M jvm允许分配的最大非堆内存,默认为物理内存1/4

内存分为堆内存与非堆内存:

堆内存为Java代码及可用的内存,是留给开发人员使用的;非堆就是JVM留给自己用的。

在JVM中如果98%的内存用于垃圾回收且可用的 Heap Size 不足 2%的时候将抛出 OutOfMemoryError 错误

堆内存分配:

JVM初始分配的堆内存由Xms制定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。
默认空余堆内存小于40%时,JVM会增大堆知道Xmx的最大限制。空余堆内存大于70%时,JVM会减少到-Xms的最小限制,因此服务器设置-Xms、-Xmx
相等以避免在每次GC(垃圾回收)后调整堆的大小。
说明:如果-Xmx
不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。

非堆内存分配:
 
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

PermGen space的全称是Permanent Generation
space,是指内存的永久保存区域。
  XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError:
PermGen space 就是内存益出。

为什么会内存溢出:
 
 
(1)飞堆内存用于存放class和mete的信息,Class在被Load的时候被放入PermGen
space(内存永久区域)区域,它和存放实例的Heap区域不同。
  (2)GC(Garbage Collection:垃圾回收器)不会再主程序运行期对PermGen
space进行清理,所以如果程序Load很多class的话,就有可能会出现PermGen
space错误。

JVM内存限制(最大值):

首先,JVM内存限制于实际的最大物理内存,假设内存无限大的话,JVM内存的最大值跟操作系统有关,简单说32位处理器虽然可控内存空间有4GB,但是最大也许就被先知道2GB-3GB,而64位就没有限制。

jdk outMemory内存溢出的更多相关文章

  1. Java内存区域与内存溢出异常(jdk 6,7,8)

    运行时数据区域 Java虚拟机在执行Java程序的过程中会把它关联的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户 ...

  2. jvm内存溢出分析

    概述 jvm中除了程序计数器,其他的区域都有可能会发生内存溢出 内存溢出是什么? 当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出 内存溢出和 ...

  3. Tomcat内存溢出的三种情况及解决办法分析

    Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...

  4. myeclipse tomcat内存溢出解决方法

    Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题.在 tomcat的catalina.bat ...

  5. MyEclipse或者Eclipse内存溢出问题

    对于一些项目,我们经常会遇到内存溢出的问题,这个时候我们就需要进行设置JDK的各个内存的大小了. 如果是运行项目以后出现问题的话,那么主要还是jdk或者是tomcat的内存问题,至于网上说的xxx.i ...

  6. Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)

    来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...

  7. 服务器中配置多个Tomcat及内存溢出配置

    1.更改server.xml文件中端口(启动.关闭端口) 2.在startup.bat文件开头加上 SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0 ...

  8. Java抛出OutOfMemoryError:Java heap space堆内存溢出错误的分析方案

    抛出堆内存溢出的错误一定要记得保留现场环境(导出堆内存信息到文件),否则如果无法进行分析,并从根本上解决问题,下次很有可能还会出现. 第一步:导出堆转储文件 我们可以使用Jdk自带的jmap工具.使用 ...

  9. 一次偶然的Java内存溢出引发的思考

    据说一次SQL查询返回太多数据,会引起服务器内存溢出. 不过,我现在碰到的情况是,调用一个Postgresql 存储过程,很复杂,那么在其中有很多raise notice这样的调试语句,如果碰巧有个死 ...

随机推荐

  1. 《转载》深入理解 CSS 中的行高与基线

    这篇文章总结的很好,故转载收藏. 1.基本概念 1.  基线.底线.顶线.中线 注意:基线(base line)并不是汉字文字的下端沿,而是英文字母“x”的下端沿. 2. 内容区 内容区是指底线和顶线 ...

  2. 解读机器学习基础概念:VC维的来龙去脉 | 数盟

    http://dataunion.org/14581.html

  3. whereis linux文件搜索

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

  4. mysql触发器使用注意

    1.在创建触发器的时候,语句中避免在一个select语句查询多个列,例如使用select a,b from table,应该分开使用select语句, 例如select a from table  s ...

  5. <s:if>标签与ActionContext.getContext().getSession()

    今天在做<s:if>标签中的属性值从 ActionContext.getContext().getSession().put("WW_TRANS_I18N_LOCALE" ...

  6. perl正则表达式第一周笔记

    正则表达式基础 ^ 行首标志 $ 行末标志 如^cat即一整行只有cat这个单词,^则是一个空行 [  ] 字符组,用来匹配若干字符之一 如gr[ae]y,即grey或者gray - 在字符组内部,字 ...

  7. hdu 4676 Sum Of Gcd 莫队+数论

    题目链接 给n个数, m个询问, 每个询问给出[l, r], 问你对于任意i, j.gcd(a[i], a[j]) L <= i < j <= R的和. 假设两个数的公约数有b1, ...

  8. vb listview 的常用操作

    常用操作:获取当前行数和列数: MsgBox "行数:" & ListView1.ListItems.Count & "列数:" & L ...

  9. 调bug时候应该提高思维深度(多问二十个为什么)

    版权声明:本文为博主原创文章,未经博主允许不得转载. (一)关于思维深度 读书时 有的人做一份卷子有一份卷子的收获 有的人做100张卷子只有一份卷子的收获 写代码时 有的人调一个Bug可以收获多方面的 ...

  10. js获取宽度设置thickbox百分比

    thickbox的宽高不好设为百分比,这样遇到不同的尺寸的电脑就会出现问题. 怎么做呢? 通过js来处理. <script type="text/javascript"> ...