0

我得到了一个java.lang.OutOfMemoryError,它似乎发生在我做反思的时候:

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

这说明什么?有人知道吗?

4

4 回答 4

2

代码是一样的

obj.getClass().getMethod(methodName)

这说明什么?

它表明您需要仔细阅读错误消息,因为这不太可能是原因,因为它不会产生很少的内存。

有人知道吗?

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

于 2012-08-08T09:14:17.080 回答
1

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

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

于 2012-08-08T09:15:21.370 回答
0

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

于 2012-08-08T09:15:09.223 回答
0

java.lang.OutOfMemoryError当 Java 虚拟机因为内存不足而无法分配对象时抛出,并且垃圾收集器无法提供更多内存。

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

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

于 2012-08-08T09:17:43.237 回答