AnyLogic memory error: how to know how much the threshold is exceeded?
AnyLogic memory error: how to know how much the threshold is exceeded?
我的主代理中有很多道路交通和标记元素、图表、节点和弧线。当 运行 模拟时会抛出以下错误:
Description: The code of method _createPersistentElementsBP4_xjal() is exceeding the 65535 bytes limit.
我读了这篇文章:https://noorjax.com/2018/10/17/your-agent-is-too-big-memory-problem/
但是,我想知道我超出了多少限制。有没有办法获得这些信息?因为如果它离阈值不远,我可以进行一些修改以使其低于该阈值。不然创建那么多新代理很痛苦等等
这是 Java 虚拟机 (JVM) 对方法主体的 Java 字节码 大小(即编译代码大小)的限制据我了解(例如,请参阅 Baeldung's description 链接到相关的 JVM 规范详细信息)。因此,即使您可以看到针对违规方法生成的 Java source 代码,它实际上并不是 that 的长度这就是限制(尽管源代码的长度显然在某种程度上与编译后的字节码的大小相关)。
[因此,如果 Felipe 减少变量名长度的想法有什么不同,我会感到惊讶,因为它们没有像字节码那样显式存储...]
所以,不,你不知道你已经超过了多少(除非我猜你实际上审问了编译的 class 文件并且确切地知道你在做什么)。尽管 'causing' 问题出在 AnyLogic 的代码生成上,但从面向对象(或数据结构)设计的角度来看,任何此类情况通常总是您可以更好地重新架构(如 Felipe 的示例)在模型中。
我的主代理中有很多道路交通和标记元素、图表、节点和弧线。当 运行 模拟时会抛出以下错误:
Description: The code of method _createPersistentElementsBP4_xjal() is exceeding the 65535 bytes limit.
我读了这篇文章:https://noorjax.com/2018/10/17/your-agent-is-too-big-memory-problem/
但是,我想知道我超出了多少限制。有没有办法获得这些信息?因为如果它离阈值不远,我可以进行一些修改以使其低于该阈值。不然创建那么多新代理很痛苦等等
这是 Java 虚拟机 (JVM) 对方法主体的 Java 字节码 大小(即编译代码大小)的限制据我了解(例如,请参阅 Baeldung's description 链接到相关的 JVM 规范详细信息)。因此,即使您可以看到针对违规方法生成的 Java source 代码,它实际上并不是 that 的长度这就是限制(尽管源代码的长度显然在某种程度上与编译后的字节码的大小相关)。
[因此,如果 Felipe 减少变量名长度的想法有什么不同,我会感到惊讶,因为它们没有像字节码那样显式存储...]
所以,不,你不知道你已经超过了多少(除非我猜你实际上审问了编译的 class 文件并且确切地知道你在做什么)。尽管 'causing' 问题出在 AnyLogic 的代码生成上,但从面向对象(或数据结构)设计的角度来看,任何此类情况通常总是您可以更好地重新架构(如 Felipe 的示例)在模型中。