AnyLogic内存错误:如何知道超过了多少阈值



我的主代理中有很多道路交通和标记元素、图表、节点和弧线。当运行模拟时,它会抛出以下错误:

描述:方法_createPersistentElementsBP4-xjal((的代码超过了65535字节的限制。

我读过这篇文章:https://noorjax.com/2018/10/17/your-agent-is-too-big-memory-problem/

然而,我想知道我超出了限额多少。有什么方法可以得到这些信息吗?因为如果它离阈值不远,我可以做一些修改,使其低于该阈值。否则,创建这么多新的代理程序是痛苦的。

根据我的理解,这是Java虚拟机(JVM(对方法体的Java字节码大小的限制(即编译的代码大小((例如,请参阅链接到相关JVM规范详细信息的Baeldung描述(。因此,即使您可以看到针对违规方法生成的Java源代码,但实际上并不是的长度才是限制(尽管很明显,源代码的长度在某种程度上与编译的字节码的大小相关(。

[因此,如果Felipe减少可变名称长度的想法有任何不同,我会感到惊讶,因为它们没有像字节码中那样显式存储…]

所以,不,你无法判断你已经超出了它多少(除非我猜你真的询问了编译的类文件,并且确切地知道你在做什么(。即使是AnyLogic的代码生成"导致"了这个问题,但任何这样的情况通常都是你可以从模型中面向对象(或数据结构化(的设计角度更好地重新构建的(就像Felipe的例子一样(。

相关内容

最新更新