- 浏览: 376296 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (314)
- java (132)
- 生活 (13)
- javase模式 (6)
- weblogic (4)
- jquery (5)
- sql (21)
- ecside (1)
- el (3)
- css (5)
- spring (7)
- ireport (2)
- linux (14)
- struts2 (2)
- jstl (1)
- rmi (1)
- rose (9)
- js (6)
- swing (4)
- webservice (1)
- jboss (1)
- ejb3 (2)
- xml (1)
- 线程 (9)
- socket (3)
- jms (2)
- tomcat (10)
- 领域驱动 (3)
- json (3)
- 权限 (2)
- jvm (1)
- 书籍 (1)
- eclipse RCP (0)
- 数据库设计 (10)
- 软件分析建模 (5)
- 分析建模 (3)
- hibernate jpa (5)
- Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等 (1)
- 项目管理 (2)
- 财务 (0)
- oracle (2)
- 需求 (2)
- rcp gef (0)
- c++ (1)
- hadoop (2)
- BIGDATA (3)
- c (6)
最新评论
-
lh_kevin:
...
jpa 注解 -
一别梦心:
你好,我也遇到此问题了。就你贴的那段代码,你说了两种解决方式, ...
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法 -
fireinjava:
...
el表达式 -
宋建勇:
...
JSON: property "xxx" has no getter method in class "..." -
handawei:
有道理,jpa是orm框架的java标准,它关注的是对象到关系 ...
jpa 注解
JVM 调优,是个很简单也很复杂的话题,由于经常遇到这类问题,在这里总结一下。
先从解决bug开始,当Java程序申请内存,超出VM可分配内纯的时候,VM首先可能会GC,如果GC完还是不够,或者申请的直接超够VM可能有的,就会抛出内 存溢出异常。从VM规范中我们可以得到,一下几种异常。
java.lang.StackOverflowError:(很少)
java.lang.OutOfMemoryError:heap space(比较常见)
java.lang.OutOfMemoryError: PermGen space (经常出现)
java.lang.OutOfMemoryError: GC overhead limit exceeded(某项操作使用大量内存时发生)
以下分别解释一下,从最常见的开始:
java.lang.OutOfMemoryError: PermGen space 这个异常比较常见,是说JVM里的Perm内 存区的异常溢出,由于JVM在默认的情况下,Perm默认为64M,而很多程序需要大量的Perm区内 存,尤其使用到像Spring等框架的时候,由于需要使用到动态生成类,而这些类不能被GC自动释放,所以导致OutOfMemoryError: PermGen space异常。解决方法很简单,增大JVM的 -XX:MaxPermSize 启动参数,就可以解决这个问题,如过使用的是默认变量通常是64M[5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.],改成128M就可以了,-XX:MaxPermSize=128m。如果已经是128m(Eclipse已经是128m了),就改成 256m。我一般在服务器上为安全起见,改成256m。
java.lang.OutOfMemoryError:heap space或其它OutOfMemoryError,这个异常实际上跟上面的异常是一个异常,但解决方法不同,所以分开来写。上面那个异常是因为JVM的perm区内 存区分少了引起的(JVM的内 存区分为 young,old,perm三种)。而这个异常是因为JVM堆内 存或者说总体分少了。解决方法是更改 -Xms -Xmx 启动参数,通常是扩大1倍。xms是管理启动时最小内 存量的,xmx是管里JVM最大的内 存量的。
注:OutOfMemoryError可能有很多种原因,根据JVM Specification, 可能有一下几种情况,我先简单列出。stack:stack分区不能动态扩展,或不足以生成新的线程。Heap:需要更多的内 存,而不能获得。Method Area :如果不能满足分配需求。runtime constant pool(从Method Area分配内 存)不足以创建class or interface。native method stacks不能够动态扩展,或生成新的本地线程。
java.lang.OutOfMemoryError: GC overhead limit exceeded,这个是JDK6新添的错误类型。是发生在GC占用大量时间为释放很小空间的时候发生的,是一种保护机制。我在JSP导大Excel的时候碰到过。最终解决方案是,关闭该功能,使用—— -XX:-UseGCOverheadLimit
最后说说java.lang.StackOverflowError,老实说这个异常我也没碰见过,但JVM Specification就提一下,规范上说有一下几种境况可能抛出这个异常,一个是Stacks里的线程超过允许的时候,另一个是当native method要求更大的内 存,而超过native method允许的内 存的时候。根据SUN的文档,提高-XX:ThreadStackSize=512的值。
总的来说调优JVM的内 存,组要目的就是在使用内 存尽可能小的,使程序运行正常,不抛出内 纯溢出的bug。而且要调好最小内 存,最大内 存的比,避免GC时浪费太多时间,尤其是要尽量避免FULL GC。
补充:由于JDK1.4新增了nio,而nio的buffer分配内存比较特殊(读写流可以共享内存)。如果有大量数据交互,也可能导致java.lang.OutOfMemoryError。相应的JDK新增了一个特殊的参数:-XX:MaxDirectMemorySize 默认是64M,可以改大些如128M。
-XX:MaxDirectMemorySize=<size>
Specifies the maximum amount of memory in bytes that the Java™ NIO library can allocate for direct memory buffers. The default is 64 megabytes, which corresponds to
-XX:MaxDirectMemorySize=64m . The use of direct memory buffers can minimize the copying cost when doing I/O operations.
本篇文章来源于锋芒网(www.ixdba.net) 原文链接:http://www.ixdba.net/a/web/tomcat/2010/0520/107.html
发表评论
-
字符串,Volatile
2013-03-18 12:01 1069转载:http://www.ibm.com/de ... -
qian rushi
2012-12-01 10:13 0唐攀,华清远见高级研 ... -
110道 C语言 题目 超经典中的经典
2012-10-21 08:57 0... -
LOG4J
2012-08-07 10:34 1004long4j配置 转载:http://www.iteye. ... -
jpa 注解
2011-12-20 09:23 11750转:http://blog.csdn.net/gdweijin ... -
jna
2011-11-29 17:28 1484... -
eclipse设置
2011-11-16 08:45 835转:http://www.iteye.com/topic/11 ... -
深入分析 Java I/O 的工作机制
2011-11-14 08:57 858... -
java获得计算机信息
2011-10-29 13:03 1333采用singar.jar实现,需要将sigar-x86-win ... -
java内存机制
2011-10-24 13:01 1245转. Java内存机制详解 Ja ... -
缓存技术
2011-09-27 13:28 778一个培训的ppt,是介绍缓存知识的。有兴趣的可以参考:缓存技术 ... -
单点登录
2011-09-26 08:37 1560了解单点登录:: 可以使 ... -
继承和组合的关系
2011-08-18 09:17 864个人工作的感触: 首先框架的编写是难度很大,而工具 ... -
导入导出,创建databaselink
2011-08-10 15:56 2094pl/sql导出表结构和表 ... -
小结一下
2011-08-04 10:20 824觉得程序层面上是:数据类型(int long string) ... -
分析建模
2011-07-17 20:13 838系统建模与分析。 -
Java浮点数的精确计算
2011-06-27 16:10 953... -
异常系统
2011-05-31 17:19 678http://www.iteye.com/topic/7217 ... -
权限管理
2011-01-27 09:30 1300... -
jvisualvm
2011-01-11 21:09 865可以查看远程 本地的jvm 有两种方式 jmx jstatd ...
相关推荐
1.1 JVM调优总结-序3 1.2 JVM调优总结(一)-- 一些概念 4 1.3 JVM调优总结(二)-一些概念 7 1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代...
JVM调优总结 -Xms -Xmx -Xmn -Xss JVM调优总结 -Xms -Xmx -Xmn -Xss
JVM调优总结 JVM调优总结 JVM调优总结
JVM调优总结PDF,带原理图,延时如何进行分代垃圾回收
JVM调优总结 -Xms -Xmx -Xmn -Xss
FYI. JVM调优总结 JVM调优总结 JVM调优总结
JVM调优总结
深入虚拟机---JVM调优总结(摘自网上网上大牛分享),主要是详细介绍了gc的收集,觉得不错。
JVM调优总结 从实战出发,详细讲述JVM调优经验
JVM调优总结1-12
JVM调优总结.pdf
JVM调优总结 --收集某位高人的博客.
JVM调优总结:调优方法
JVM调优总结:典型配置举例
JVM调优总结(4)分代垃圾回收Java开发Java经验技巧共10页.pdf.zip
JVM调优总结(三)基本垃圾回收算法.pdf