我正在开发一个在运行时生成和编译类的应用程序。这有时会产生大量的生成代码。
对于我们的一个测试用例,我从 JVM 收到一个错误:
TestClass.java:83865: too many constants
只是这个。我看过其他关于类似错误的报告,但在这些情况下,错误消息会抱怨常量池。但在这种情况下,它没有。
如果这意味着达到了 JVM 的常量池的限制,那是什么意思?我的意思是,就 Java 代码而言,这些常量是什么类型的?类方法?领域?字面意思?我没有静态或最终方法,也没有字段。
你能给我一些线索吗?
编辑:
将代码拆分为多个类已经在计划中。虽然不是因为这个确切的原因。
我知道常量池的限制,我的疑问正是其中的内容。生成的代码没有超过 10000 个方法+字段。
我怀疑文字是否也进入常量池,因为这是我看到将此数字提高到 65K 的唯一原因。似乎是这样。