我有一个java应用程序并产生很多线程..并且由于内存不足错误..如果它运行了太多时间就死了..是否有一个jvm配置参数,我可以设置它以便它没有内存可用时会等待内存,而不是丢失内存错误。
答案 0 :(得分:3)
备份一点。如果您的应用程序正在创建JVM内存不足的线程,那么您确实需要重构以使用某种线程池机制。您可以捕获内存不足的异常并查看是否有任何线程释放资源然后返回而不处理它但这对我来说是一个糟糕的代码味道。
答案 1 :(得分:0)
我真的认为设置为jvm参数是不可行的。您应该将-Xmx和-Xms设置为JVM的相应值。在您的代码中,您可以使用Runtime.freeMemory检查堆上的当前可用内存。如果空闲内存太低,你可能会让你的线程睡眠,直到你有足够的内存来处理。