Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как работать на Java с оперативной памятью?

1.8K
22 ноября 2010 года
erslgoeirjh
26 / / 16.12.2005
Как на Java работать с оперативной памятью? Как выделить память, записать туда какое-то строковое, байтовое или числовое значение, как сосчитать из этой области памяти строковое, байтовое или числовое значение, как обнулить и как очистить эту область памяти? Какие пакеты и какие классы из J2SE для этого стоить использовать?
244
22 ноября 2010 года
UAS
2.0K / / 19.07.2006
Че, первые 3 страницы учебника по яве осилить слишком сложно?
63
22 ноября 2010 года
Zorkus
2.6K / / 04.11.2006
В Java официально нельзя работать с памятью напрямую.

Если же ОЧЕНЬ хочется и вы крутой virtual machine hacker - есть недокументированные внутренние API чтобы обходить это ограничение. Но я не думаю, что вам они нужны.
5
23 ноября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: erslgoeirjh
Как на Java работать с оперативной памятью?

С памятью работать элементарно - можно создавать объекты и писать в их поля значения.

Цитата: erslgoeirjh
Как выделить память, записать туда какое-то строковое, байтовое или числовое значение


Строковое:

 
Код:
String s = "Hi!";

Числовое:
 
Код:
int i = 10;



Ваш К.О.
1.8K
23 ноября 2010 года
erslgoeirjh
26 / / 16.12.2005
Имеется две программы. Одна интерфейсная на Java (prog1), другая выполняет математические вычисления на C++ (prog2).
Программа prog1 вызывает программу prog2. Нужно передать данные из программы prog1 в программу prog2 и наоборот (не через файл). Я хочу сделать это через оперативную память. Для этого надо в программе prog1 выделить эту область, адрес её записать в текстовый файл memory.txt, потом программа prog1 запускает программу prog2, которая считывает значение из файла memory.txt. Затем в программе prog2 запускается поток (thread), который с определённой периодичностью опрашивает эту область памяти на предмет того, что туда поступило какое-то значение. При появлении этого значения в этом буфере памяти программа prog2 производит обработку этого значения.

Также и в программе prog1 можно запустить поток, который также с определённой периодичностью будет опрашивать этот буфер памяти.

Как это сделать?
5
23 ноября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: erslgoeirjh
Имеется две программы. Одна интерфейсная на Java (prog1), другая выполняет математические вычисления на C++ (prog2).
Программа prog1 вызывает программу prog2. Нужно передать данные из программы prog1 в программу prog2 и наоборот (не через файл).

Как это сделать?

Еще со времен первоюникса существует такое понятие как стандартные потоки ввода-вывода. Воспользуйтесь ими - они какраз для этого предназначены.

7
23 ноября 2010 года
@pixo $oft
3.4K / / 20.09.2006
Странно,однако–сами данные вы через файл передавать не хотите,но вот адрес записать в файл–для вас святое.Передавайте уж сами данные через него,в чём проблема-то?
А адрес,если всё-таки решите делать по-вашему,можно и через командную строку передать
Цитата:
Затем в программе prog2 запускается поток (thread), который с определённой периодичностью опрашивает эту область памяти на предмет того, что туда поступило какое-то значение. При появлении этого значения в этом буфере памяти программа prog2 производит обработку этого значения

Как он об этом узнает?Ладно бы по изменению значения,но ведь могут и 2 подряд одинаковых быть

11
23 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
http://forum.codenet.ru/showthread.php?t=64882
явно человек не может никак определиться, где с памятью проще работать
1.8K
23 ноября 2010 года
erslgoeirjh
26 / / 16.12.2005
Цитата: hardcase
Еще со времен первоюникса существует такое понятие как стандартные потоки ввода-вывода. Воспользуйтесь ими - они какраз для этого предназначены.



А решение с помощью потоков ввода-вывода -- кроссплатформенное?

Дело в том, что я разрабатываю кроссплатформенный проект (программы prog1 и prog2), который будет работать и под Windows, и под Unix. (Программа prog2 на C++ будет использовать библиотеку Qt для обеспечения кроссплатформенности её работы).

11
23 ноября 2010 года
oxotnik333
2.9K / / 03.08.2007
Цитата: erslgoeirjh

Дело в том, что я разрабатываю кроссплатформенный проект (программы prog1 и prog2)


ИМХО за кроссплатформенность рановато еще садиться... даже рановато слово то такое употреблять.

1.8K
25 ноября 2010 года
erslgoeirjh
26 / / 16.12.2005
Просто такая у меня задача стоит--написать программы на Java и на C++, которые бы работали и под Windows, и под Unix.

Как я понял, лучше всего передавать данные между этими двумя программами через сокеты. Это действительно кроссплатформенное решение.
5
25 ноября 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: erslgoeirjh

Как я понял, лучше всего передавать данные между этими двумя программами через сокеты. Это действительно кроссплатформенное решение.


Сокеты к свойствам кроссплатформенности программ относятся мягко говоря отдаленно.
Я уже вроде упоминал о стандартных потоках ввода-вывода. Почему они не подходят? Ну и опять же в Java есть JNI - тут вообще не нужны ни сокеты ни стандартные потоки.

399
25 ноября 2010 года
KIV
432 / / 20.01.2009
И в Linux/UNIX и в Windows есть потоки ввода вывода. И все кому не лень ими пользуются (в UNIX побольше, в Windows чуть поменьше). Зачем изобретать что-то своё?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог