im пытается нарисовать вертикальные и горизонтальные линии между случайно выбранными точками на сетке и заданными точками из списка точек. Моя кодировка в стиле новичка, похоже, сказывается на приложении, которое раздавливается после того, как я нажимаю случайную точку на сетке. то он выбрасывает следующий OOME. Софар, я пытался увеличить кучу. Это совсем не помогло .. любые идеи? вот фрагмент кода, который вызывает it.i've ГНФАР только написанный код для случая события щелчка к востоку от точки из спискаКак обрабатывать исключение OOME, если увеличение размера кучи не работает?
@Override
public void mouseClicked(MouseEvent e) {
boolean crossingLines = false;
Line l;
Point p = new Point(e.getX(), e.getY());
for (int i = 0; i < pointList.size(); i++) {
Rectangle rec = new Rectangle(pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP
- TOLERANCE, pointList.y
* GAPBETWEENPOINTS
+ GAP
- TOLERANCE,TOLERANCE * 2,
CLICKTOLERANCE * 2);
if (rec.contains(p)) {
if (clickedEast(p, pointList.get(i)) == true) {
for (int j = i + 1; j < pointList.size(); j++) {
if (pointList.get(j).y
* GAPBETWEENPOINTS
+ GAP == pointList.get(i).y
* GAPBETWEENPOINTS
+ GAP
&& pointList.get(j).x
* GAPBETWEENPOINTS
+ GAP > pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP) {
l = new Line(pointList.get(i),
pointList.get(j));
if (!lineList.contains(b)) {
for (int k = 0; k < lineList.size(); k++) {
if (lineList.get(k).getHorizontal() == false) {
if (pointList.get(i).x
* GAPBETWEENPOINTS
+ GAP < lineList
.get(k).getStartPoint().x
&& lineList.get(k)
.getStartPoint().x < pointList.get(j).x
* GAPBETWEENPOINTS
+ GAP
&& lineList.get(k)
.getStartPoint().y < pointList.get(i)).y
* GAPBETWEENPOINTS
+ GAP
&& pointList.get(k).y
* GAPBETWEENPOINTS
+ GAP < lineList
.get(k).getEndPoint().y) {
crossinglines = true;
}
}
if (crossingLines == false) {
lineList.add(b);
}
}
}
validate();
repaint();
}
}
}
}
}
}
и здесь исключение:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java
heap space
at java.util.Arrays.copyOf(Arrays.java:2245)
at java.util.Arrays.copyOf(Arrays.java:2219)
at java.util.ArrayList.grow(ArrayList.java:242)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
at java.util.ArrayList.add(ArrayList.java:440)
at GUIs.GameField.mouseClicked(GameField.java:326)
at java.awt.Component.processMouseEvent(Component.java:6519)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4872)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4698)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at
java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:87)
at java.awt.EventQueue$4.run(EventQueue.java:720)
at java.awt.EventQueue$4.run(EventQueue.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.
java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
Не могли бы вы показать нам код, который вызывает ошибку? Например. что происходит в 'GUIs.GameField.mouseClicked()' –
Может иметь много причин. Возможно, у вас есть логическая ошибка и вы пытаетесь создать большой массив ArrayList, который вы не хотите создавать. Возможно, вы просто написали неэффективный код. Нам действительно нужен код, связанный с исключением. – Zabuza
'Мое кодирование в стиле новичка '- не видя этого, это очень сложно. –