Java"太多常量"JVM错误

hal*_*arp 8 java jvm

我正在开发一个在运行时生成和编译类的应用程序.这有时会产生大量生成的代码.

在我们的一个测试用例中,我从JVM收到错误:

TestClass.java:83865: too many constants
Run Code Online (Sandbox Code Playgroud)

只是这个.我已经看到有关类似错误的其他报告,但在这些情况下,错误消息抱怨常量池.但在这种情况下它没有.

如果这意味着达到了JVM常量池的限制,那意味着什么?我的意思是,在Java代码方面,这些常量是什么?班级方法?场?文字?我没有静态或最终方法也没有字段.

你能给我一些线索吗?

编辑:

将代码拆分为多个类已经按计划进行.虽然不是出于这个原因.

我意识到恒定池的局限性,我怀疑的正是这个问题.生成的代码不超过10000个方法+字段.

我怀疑的是文字是否也会进入常数池,因为这是我看到将这个数字提高到65K的唯一原因.看来是这样.

Lou*_*man 10

http://en.wikipedia.org/wiki/Java_class_file#The_constant_pool

常量池包括数字,字符串,方法名称,字段名称,类名,类和方法的引用......基本上都是一切.

最多可以有65536个.