Java反射和OOM错误

时间:2012-08-08 09:10:20

标签: java memory-management reflection out-of-memory

我得到一个java.lang.OutOfMemoryError,这似乎发生在我做反思的一点上:

obj.getClass().getMethod(methodName, (Class[]) null);

这表明了什么?有谁知道吗?

4 个答案:

答案 0 :(得分:2)

代码与

相同
obj.getClass().getMethod(methodName)
  

这表明了什么?

它表示您需要仔细阅读错误消息,因为这不太可能是原因,因为它不会创建非常少的内存。

  

有人知道吗?

如果确实是错误发生的地方,那么真正的原因很可能就在其他地方。要解决此问题,您需要对应用程序进行内存配置,或者在OOME上进行堆转储或增加最大堆大小(或全部三个)

答案 1 :(得分:1)

抛出内存不足错误的点通常远不及使用大量内存的代码部分。当垃圾收集器检测到内存问题时会抛出它,但这可能是另一个消耗所有内存的线程。

如果您不知道问题出在哪里,最好的办法就是运行一个分析器。

答案 2 :(得分:0)

我认为您没有分配PermGen空间。您可以尝试使用-XX:PermSize = 128M -XX:MaxPermSize = 256M作为应用程序的java命令行参数。

答案 3 :(得分:0)

当Java虚拟机无法分配对象时会抛出

java.lang.OutOfMemoryError,因为它没有内存,并且垃圾收集器不能再提供任何内存。

我认为这与obj.getClass().getMethod(methodName, (Class[]) null);

无关

请检查您的应用程序/程序内存不足的原因。