java程序的堆栈溢出问题,急急急!

yichenwl811225 2008-02-22 02:42:23
我在java程序编译运行时没有任何问题,打普通包的时候也没有问题,并且在真机上能够运行正常,但是在打混淆包的时候出现了堆栈溢出异常,错误提示为:
Exception in thread "main" java.lang.StackOverflowError
at proguard.optimize.evaluation.Stack.push(Stack.java:208)
at proguard.optimize.evaluation.TracedStack.push(TracedStack.java:136)
at proguard.optimize.evaluation.Processor.visitSimpleInstruction(Processor.java:89)
at proguard.classfile.instruction.SimpleInstruction.accept(SimpleInstruction.java:152)
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:1414)
at proguard.optimize.evaluation.PartialEvaluator.evaluateInstructionBlock(PartialEvaluator.java:1559)
打包失败。

请问各位大侠出现这种异常的原因是什么啊?该如何解决呀?问题急,谢谢啦!

我在网上查过资料,说出现这种问题的原因是不断的创建实例没有得到释放产生,或者是因为循环调用出现了递归现象,我仔细检查了整个程序,都觉得并没有发生前面的两种原因。我想请问,除了全局变量在程序断开才释放以外,在函数方法内创建的局部变量只要该方法运行结束,其中的变量是不是就会被释放掉啊?那么除了变量以外,就只有方法调用这一块了,请各位大侠帮我分析分析,是什么原因?该怎么检查是哪里出了问题啊?
...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuquan 2008-06-27
  • 打赏
  • 举报
回复
混淆的包太大造成的内存溢出,proguard在混淆处理时本上会消耗大量的内存。建议做混淆的包不要过大,保证在2M以内应该问题不大。
jonesdream 2008-03-03
  • 打赏
  • 举报
回复
我也遇到这样的问题,结果程序只能暂时不混淆。我发现也是因为其程序太大造成的。
http://proguard.sourceforge.net/manual/troubleshooting.html

StackOverflowError
This error might occur when processing a large code base on Windows (surprisingly, not so easily on Linux). In theory, increasing the stack size of the Java virtual machine (with the usual -Xss option) should help too. In practice however, the -Xss setting doesn't have any effect on the main thread, due to Sun Bug #4362291. As a result, this solution will only work when running ProGuard in a different thread, e.g. from its GUI.

8,323

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧