Вниз  Эмулятор IBM PC XT
- 22.05.2013 / 21:34
Lexi
  Пользователь

Lexi 
Сейчас: Offline
vl@volk, По идее java сама должна очистить память, при выходе. Да и зачем обнулять ссылку... разве что для более явного срабатывания gc.
- 22.05.2013 / 22:43
Lexi
  Пользователь

Lexi 
Сейчас: Offline
Как я понимаю, ошибка из-за того, что код в emul.java крутится в цикле и внезапно лишается памяти.
_____
В destroyApp, имхо, полезней FileConnection позакрывать
  1.         for( int i = 0; i < Emul.fc.length; i++ ) try{
  2.             if(Emul.fc[ i ] != null){
  3.                 Emul.fc[ i ].close();
  4.                 if(Emul.fo[ i ].exists()) Emul.fo[ i ].delete();
  5.                 Emul.fo[ i ].close();
  6.             }
  7.         }catch(IOException ex){}

- 22.05.2013 / 22:51
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Lexi, Он никак не может лишится памяти, память удаляется при выходе но никак не в прцессе работы мидлета
__________________
 знает толк
- 22.05.2013 / 23:13
Lexi
  Пользователь

Lexi 
Сейчас: Offline
vl@volk, Речь про массив байт, который используется как память эмулируемого компьютера. И после Emul.mem = null вылетает исключение.
- 22.05.2013 / 23:18
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Как? У меня никаких исключений. Я же тебе говрою, удаляется память при выходе
__________________
 знает толк
- 22.05.2013 / 23:39
Lexi
  Пользователь

Lexi 
Сейчас: Offline
Так:


Прикрепленные файлы:
img.png (23.13 кб.) Скачано 158 раз
- 22.05.2013 / 23:45
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Пробовал удалять Emul.mem = null?
__________________
 знает толк
- 23.05.2013 / 06:14
Artem_x86
  Пользователь

Artem_x86 
Сейчас: Offline
vl@volk, я просто не сделал нормального выхода из основного цикла программы, поэтому легче было сделать исключение при выходе, т. к. в KEmulator-е например после выхода прога продолжала бы работать.

Изменено Artem_x86 (23.05 / 06:15) (всего 1 раз)
- 23.05.2013 / 07:58
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
Artem_x86, А там есть циклы while(true)?
Можно созздать булевую например flag, и в классе Emul добавить метод
  1. stop(){
  2.  flag = false;
  3.   mem = null;
  4.  System.gc();
  5. }
, а потом этот метод вызывать в destroyApp()
  1. if ( emul != null ) {
  2.  emul.stop();
  3.   emul = null;
  4.  System.gc();
  5. }

__________________
 знает толк

Изменено vl@volk (23.05 / 07:59) (всего 2 раза)
- 30.05.2013 / 16:50
Artem_x86
  Пользователь

Artem_x86 
Сейчас: Offline
Немного обновил эмуль. Сделал перевод БИОС, а также убрал "Testing RAM". Смотреть в первом посте.
Наверх  Всего сообщений: 675
Фильтровать сообщения
Поиск по теме
Файлы топика (57)