jdk outMemory内存溢出
-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内存溢出的更多相关文章
- Java内存区域与内存溢出异常(jdk 6,7,8)
运行时数据区域 Java虚拟机在执行Java程序的过程中会把它关联的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户 ...
- jvm内存溢出分析
概述 jvm中除了程序计数器,其他的区域都有可能会发生内存溢出 内存溢出是什么? 当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出 内存溢出和 ...
- Tomcat内存溢出的三种情况及解决办法分析
Tomcat内存溢出的原因 在生产环境中tomcat内存设置不好很容易出现内存溢出.造成内存溢出是不一样的,当然处理方式也不一样. 这里根据平时遇到的情况和相关资料进行一个总结.常见的一般会有下面三种 ...
- myeclipse tomcat内存溢出解决方法
Tomcat直接启动正常,通过myeclipse启动tomcat内存溢出.MyEclipse启动Tomcat无视catalina.bat中设置内存大小的问题.在 tomcat的catalina.bat ...
- MyEclipse或者Eclipse内存溢出问题
对于一些项目,我们经常会遇到内存溢出的问题,这个时候我们就需要进行设置JDK的各个内存的大小了. 如果是运行项目以后出现问题的话,那么主要还是jdk或者是tomcat的内存问题,至于网上说的xxx.i ...
- Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)
来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...
- 服务器中配置多个Tomcat及内存溢出配置
1.更改server.xml文件中端口(启动.关闭端口) 2.在startup.bat文件开头加上 SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.8.0 ...
- Java抛出OutOfMemoryError:Java heap space堆内存溢出错误的分析方案
抛出堆内存溢出的错误一定要记得保留现场环境(导出堆内存信息到文件),否则如果无法进行分析,并从根本上解决问题,下次很有可能还会出现. 第一步:导出堆转储文件 我们可以使用Jdk自带的jmap工具.使用 ...
- 一次偶然的Java内存溢出引发的思考
据说一次SQL查询返回太多数据,会引起服务器内存溢出. 不过,我现在碰到的情况是,调用一个Postgresql 存储过程,很复杂,那么在其中有很多raise notice这样的调试语句,如果碰巧有个死 ...
随机推荐
- JavaScript习题
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- 又一个类dapper轮子:VIC.DataAccess
DataAccess Author: Victor.X.Qu Email: fs7744@hotmail.com DataAccess is a c# project for sql data map ...
- ssh框架的搭建
SSH 为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架. 集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层.数据持久层和域模块层,以 ...
- JAVA G1收集器 第11节
JAVA G1收集器 第11节 上两章我们讲了新生代和年老代的收集器,那么这一章的话我们就要讲一个收集范围涵盖整个堆的收集器——G1收集器. 先讲讲G1收集器的特点,他也是个多线程的收集器,能够充分利 ...
- js获取当前url参数的两方式
方法一:正则分析法function getQueryString(name) { var reg = new RegExp("(^|&)" + name + &quo ...
- Ksoap 使用简介
转:http://www.open-open.com/bbs/view/1320111271749?sort=newest WebService 是一种基于SOAP协议的远程调用标准.通过WebSer ...
- mysql函数操作
<?php try{ $dbh = new PDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd'); }catc ...
- C#.NET中的CTS、CLS和CLR
以下内容来自:http://www.cnblogs.com/zagelover/articles/2741370.html 在学习.NET的过程中,都会不可避免地接触到这三个概念,那么这三个东西是什么 ...
- Generative Learning algorithms
"generative algorithm models how the data was generated in order to categorize a signal. It ask ...
- office软件卸载
因为工具是微软出的,并且对应的是每一个版本,所以这里我给大家说下每个版本的对应卸载工具,和卸载方法. office2013卸载 下载对应卸载工具,安装工具,比如你的是2013版本的office,那么下 ...