我在Sun JVM(1.6.0_21-b06)上收到PermGen空间错误(确定,它是Oracle :))。选项-XX:MaxPermGen值的增加没有帮助。我知道PermGen是一个用于类元数据等永久对象的空间。项目中的课程数量不是很大〜10 000.在崩溃之前,jvisualvm显示57MB为使用PermGen。导致java.lang.OutOfMemoryError的算法:PermGen空间错误
我想有些算法占用所有可访问的内存。有人知道导致PermGen溢出的算法的例子吗?
UPD。我问这样一个抽象问题,因为在那个时候我不能使用任何分析器 - 代码崩溃如此困难以至于jvisualvm和eclipse停止响应。我需要杀死终端与kill -KILL {process_numer}的java进程。我使用有很多线程和JMS消息传递的糟糕的有组织(但商业)代码。调试是一团糟 - 我首先需要一些想法在哪里看。
你quesion的抽象级别杀死;)。使用Java分析器(例如virtualvm)来找出程序崩溃的原因。如果您发现问题,请重写您的问题。 – Skarab 2010-10-04 13:59:17
只是出于好奇,你能显示你使用的确切的命令行选项吗? – karoberts 2010-10-04 14:04:45
通过了解导致PermGen溢出的代码示例,您会达到什么目的?你是否试图欣赏一个问题,然后从敬仰中产生问题,或者你是否试图修复它?我已经看到这个问题解决方法失败了很多次,最好找到根本原因并解决它。像Skarab建议使用Java分析器。明白如果你是一个研究人员或学生,但看起来不像。 – sjt 2010-10-04 14:25:26