JVM crash due to perm gen space 99% in use问题

问题描述:

TransformerFactory tFactory = TransformerFactory. newInstance ();
Transformer transformer = tFactory.newTransformer(new StreamSource(inputStream));
transformer.transform(xmlSource, outputTarget);//crash here

JAVA代码中调用Transformer转换xslt文件到xml文件时出现crash,crash 文件摘要:

Heap
 def new generation   total 314560K, used 5786K [0x04600000, 0x19b50000, 0x19b50000)
  eden space 279616K,   2% used [0x04600000, 0x04ba6b80, 0x15710000)
  from space 34944K,   0% used [0x15710000, 0x15710000, 0x17930000)
  to   space 34944K,   0% used [0x17930000, 0x17930000, 0x19b50000)
 tenured generation   total 699072K, used 48833K [0x19b50000, 0x44600000, 0x44600000)
   the space 699072K,   6% used [0x19b50000, 0x1cb005f0, 0x1cb00600, 0x44600000)
 compacting perm gen  total 86272K, used 86136K [0x44600000, 0x49a40000, 0x64600000)
   the space 86272K,  99% used [0x44600000, 0x49a1e2f8, 0x49a1e400, 0x49a40000)
No shared spaces configured.

日志显示perm gen空间不够,转换xslt确实需要load大量DLL文件,网络上最多的解决方案就是增加JVM参数MaxPermSize值:

-XX:MaxPermSize=512M

按照这个方法逐渐加大几次值后还是一直crash,而且发现一个有趣的现象:

compacting perm gen  total 86272K,

这个值一直没有变化,为什么?heap足够大的情况下,JVM还没有来得及增加perm gen就挂了?于是增加JVM参数直接初始化:

-XX:PermSize=512M

结果问题解决,看来这可能是JVM的bug,有空测测JRE7。

vm_info: Java HotSpot(TM) Client VM (20.4-b02) for windows-x86 JRE (1.6.0_29-b11),
built on Oct  3 2011 01:01:08 by "java_re" with MS VC++ 7.1 (VS2003)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, jvm
, crash
, total
, gen tcp
, eden space 100 used
, space
, java heap space
, tomcat crash
, crash txt
, gen
, due
, crashed
used
jvm permsize、jvm perm、jvm maxpermsize、jvm perm区、jvm perm 内存区,以便于您获取更多的相关知识。

时间: 2024-08-04 02:02:40

JVM crash due to perm gen space 99% in use问题的相关文章

jvm crash-各位大神帮忙看看JVM Crash问题,crash.log如下:

问题描述 各位大神帮忙看看JVM Crash问题,crash.log如下: # A fatal error has been detected by the Java Runtime Environment: # SIGSEGV (0xb) at pc=0x00007f322f0663d0, pid=30574, tid=139853477934848 # JRE version: Java(TM) SE Runtime Environment (7.0_45-b18) (build 1.7.0

jvm开发笔记4—jvm crash信息处理

作者:王智通   ajvm是一个笔者正在开发中的java虚拟机, 用c和少量汇编语言编写, 目的在于探究一个可运行的java虚拟机是如何实现的, 目前整个jvm的source code代码量在5000行左右, 预计控制在1w行以内,只要能运行简单的java代码即可.笔者希望ajvm能变成一个教学用的简单java虚拟机实现, 帮助java程序员在陷入庞大的hotspot vm源码之前, 能对jvm的结构有个清晰的认识. ajvm是笔者利用业余时间编写的, 每次完成一个重要功能都会以笔记的形式发布到

Tomcat – java.lang.OutOfMemoryError: PermGen space Cause and Solution

Read more: http://javarevisited.blogspot.com/2012/01/tomcat-javalangoutofmemoryerror-permgen.html#ixzz3QDWa3Zqi Tomcat web server often suffers from java.lang.OutOfMemoryError: PermGen space whenever you deploy and undeploy your web application coupl

100+经典Java面试题及答案解析

Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性.   面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象.下面的章节我们会逐个分析这些特性.   封装   封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内部的数据.在Java当中,有3种修饰符:public,private和protected.每一种修饰符给其他的

java面试知识(来自牛客网)

接口和抽象类的区别是什么? v接口和抽象类的区别是什么?   Java提供和支持创建抽象类和接口.它们的实现有共同点,不同点在于:接口中所有的方法隐含的都是抽象的.而抽象类则可以同时包含抽象和非抽象的方法.类可以实现很多个接口,但是只能继承一个抽象类类如果要实现一个接口,它必须要实现接口声明的所有方法.但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的.抽象类可以在不提供接口方法实现的情况下实现接口.Java接口中声明的变量默认都是final的.抽象类可以包含非

Java面试必看二十问题

大家都应该知道Java是目前最火的计算机语言之一,连续几年蝉联最受程序员欢迎的计算机语言榜首,因此每年新入职Java程序员也数不胜数.究竟这些新入职的Java程序员是入坑还是入行呢?那就要看他们对于Java这门语言的看法了.不管如何,在入职之前,问题会要经过面试,那么Java面试题是怎么出的呢?下面罗列了20道常见初级Java面试题,简直是入职者必备! 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和

Java 面试题和答案 -(上)_java

本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP. 开始! 目录 面向对象编程(OOP) 常见的Java问题 Java线程 Java集合类 垃圾收集器 面向对象编程(OOP) Java是一个支持

jvm-swt中打开浏览器后,JVM崩溃

问题描述 swt中打开浏览器后,JVM崩溃 我这是swt程序,一个功能是调用浏览器访问百度地图获取坐标,以前一直都没有问题,可现在一打开这个功能JVM就挂了,下面贴出日志信息,望高手分析指点下,谢谢! # A fatal error has been detected by the Java Runtime Environment: EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x67164778, pid=2728, tid=4680 JRE v

jvm常用参数设置 专题

  在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./dump-yyy.log -XX:ErrorFile=./jvm-crash.log -Djava.security.egd=file:/dev/./urandom" #!/bin/bash JAVA_OPTS="-Xdebug -Xrunj