使用Kotlin的类实例中的java.lang.OutOfMemoryError

时间:2018-10-24 18:01:37

标签: android kotlin

我第一次在Kotlin制作具有MVP设计模式的项目。为什么我有java.lang.OutOfMemoryError

这是我的调试器错误:https://pastebin.com/U1nwjaf6

这是我的课程DbManagerhttps://pastebin.com/KRpa2eRF

这是我的课程LoginPresenterhttps://pastebin.com/Vryf0kBH

我是使用Kotlin制作应用程序的初学者。 请帮助我。

2 个答案:

答案 0 :(得分:0)

由于StackOverflow,您得到了这个:)

正在循环创建DBManager和LoginPresenter实例,并导致这种情况,您应该将实例创建移到某个方法中

答案 1 :(得分:0)

欢迎使用StackOverflow!

一些提示: 您应该发布与代码相关的所有内容。人们可以更轻松地帮助您并提供更好的答案。您还应该在问题本身中粘贴代码,而不是提供指向pastebin的链接。仅当代码太大时,才使用pastebin之类的服务。这里不是这种情况(但是您对错误消息的处理正确,它很大)。

现在,解决问题本身。

根据错误消息,您似乎正在实例化类DbManager。此类在您的LoginPresenter实例化您的其他课程:

class DbManager
{
   ...     
   val loginPresenter: LoginPresenter = LoginPresenter()
   ...
}

LoginPresenter将实例化类DbManager

class LoginPresenter
{
    ...
    val dbManager: DbManager = DbManager()
    ...
}

DbManager创建LoginPresenter,创建DbManager,创建LoginPresenter,创建...

在这里看到图案吗?它使用递归创建一个无限循环,该循环将创建类,直到耗尽内存。因此,错误。

当我只有这部分代码时,很难告诉你应该做什么。但是,我认为应该只在全局范围内实例化一次DbManager类一次,并在每次与之交互时都使用该实例。