0 0

java swing开发时遇到下面异常,请各位大牛帮忙看看分析一下,非常感谢!5

Exception occurred during event dispatching:
[AWT-EventQueue-0]11-28-2011 8:40:27 java.lang.StackOverflowError
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$ComboBoxLayoutManager.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$ComboBoxLayoutManager.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$ComboBoxLayoutManager.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$ComboBoxLayoutManager.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)
at javax.swing.plaf.basic.BasicComboBoxUI$ComboBoxLayoutManager.minimumLayoutSize(Unknown Source)
at java.awt.Container.minimumSize(Unknown Source)
at java.awt.Container.getMinimumSize(Unknown Source)
at javax.swing.JComponent.getMinimumSize(Unknown Source)


红色部分代码在日志中出现了 300多次。分析了好长时间,都没啥结果,请大牛们帮忙分析,非常感谢!

从异常中看出是堆栈溢出,而且看到的都是jdk中的方法,看不到自己的代码调用的地方。

问题补充:
IThead 写道
[AWT-EventQueue-0]11-28-2011 8:40:27 java.lang.StackOverflowError

看看你的代码中是否存在如下形式的代码:

Class A{
  A a=new A();
}

这样的代码使用DJ反编译之后,如下:

Class A{
  public A(){
     a= new A();
  }
}

要是这种情况,应该将其放入到 方法体中(自己的Constructer除外) 或者是放入到 Static 中。



关键是我的这个问题不是毕现的,概率很低,偶尔才会出现。我看了一下代码,没有出现您说的这种情况。谢谢!

问题补充:
dingjunfeng 写道
从错误上来看,
觉得是内存溢出了

at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)

觉得是你画面上的控件很多,频繁的最大最小画时,画面重绘时,控件多,而堆栈溢出。



dingjunfeng 写道
从错误上来看,
觉得是内存溢出了

at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)

觉得是你画面上的控件很多,频繁的最大最小画时,画面重绘时,控件多,而堆栈溢出。



dingjunfeng 写道
从错误上来看,
觉得是内存溢出了

at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)

觉得是你画面上的控件很多,频繁的最大最小画时,画面重绘时,控件多,而堆栈溢出。



dingjunfeng 写道
从错误上来看,
觉得是内存溢出了

at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)

觉得是你画面上的控件很多,频繁的最大最小画时,画面重绘时,控件多,而堆栈溢出。




你好,最大最小在什么时候调用呢,能否给个简单的例子。非常感谢!
2011年12月09日 17:31

3个答案 按时间排序 按投票排序

0 0

minimumLayoutSize
我是根据这个名字猜出来的。最大最在就同就是窗体最大最小化。或是画面大小发生变化。

因为我现在手里有一个树形的东西,大概1500个节点。
在画布切换时,有时就会出现内存溢出。

因为画面发生任何变化时,都会执行repaint方法,画面控件移除,再加载。
我怀疑这里最耗内存的。我现在的作法是用下面的参数增加JVM内存。暂时是够用了。

-Xms512m
-Xmx512m

暂时还没有好的办法。

2011年12月16日 15:07
0 0

从错误上来看,
觉得是内存溢出了

at javax.swing.plaf.basic.BasicComboBoxUI$Handler.minimumLayoutSize(Unknown Source)

觉得是你画面上的控件很多,频繁的最大最小画时,画面重绘时,控件多,而堆栈溢出。


2011年12月15日 17:28
0 0

[AWT-EventQueue-0]11-28-2011 8:40:27 java.lang.StackOverflowError

看看你的代码中是否存在如下形式的代码:

Class A{
  A a=new A();
}

这样的代码使用DJ反编译之后,如下:

Class A{
  public A(){
     a= new A();
  }
}

要是这种情况,应该将其放入到 方法体中(自己的Constructer除外) 或者是放入到 Static 中。

2011年12月09日 18:25

相关推荐

Global site tag (gtag.js) - Google Analytics