参数的含义:
-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. Quartz 2D官方文档翻译(持续更新中)

    转换  核心绘图模型定义了两个完全独立的坐标空间:用户空间,一个是代表文档页,和设备空间,另外一个代表本机设备的分辨率.用户空间坐标是与设备空间中像素分辨率无关的浮点数字.当你想要打印或者显示你的文档 ...

  2. “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)

    解决方案: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载) 遇到的问题: 在.h头文件中采用namespace 命名空间报错 test.h namespace LMR ...

  3. poj2459 Treasure Exploration (闭包+二分)

    这道题是让求派出机器人的最少数量,乍一看以为是简单的求最小路径覆盖,后来发现错了,因为有的点可以走多次,而二分中每个点只能走一次,所以要先用floyd进行传递闭包,然后用二分 #include< ...

  4. leetcode Invert Binary Tree python

    # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...

  5. VB EditGrid的用法

    百度了一下,关于vb 6.0 EditGrid的用法 查不到资料

  6. OSG坐标系统

    1.世界坐标         世界坐标系描述的是整个场景中所有的对象,可以理解为绝对坐标系,所有对象的位置都是绝对坐标.从整体上考虑,它为所有对象的位置提供一个绝对的参考标准,从而避免了物体之间由于独 ...

  7. IE WebDriver 因保护模式无法启动的解决 (转载)

    现在Win7 已经应用很多了,即使是最原始的Win7 也是IE8,最新的patch后,都升到了IE11 Win7下预装高版本IE的情况下,启动IE WebDriver可能会出现: org.openqa ...

  8. J2SE知识点摘记(十六)

    1.         IO包中的类层次 ┌BufferedInputStream ├DataInputStream ┌FilterInputStream┼LineNumberInputStream ├ ...

  9. Cortex-M3学习日志(四) -- UART0实验

    LPC1768含有4 个符合16C550工业标准的异步串口UATR0-UART3,其中UART1具有标准的MODEM接口和RS-485/EIA-485接口模式.串口通讯接口是连接计算机.终端.通讯控制 ...

  10. (6)Xamarin.android google map v2

    原文 Xamarin.android google map v2 Google Map v1已经在2013年的3月开始停止支持了,目前若要在你的Android手机上使用到Google Map,就必须要 ...