Как работать на Java с оперативной памятью?
Если же ОЧЕНЬ хочется и вы крутой virtual machine hacker - есть недокументированные внутренние API чтобы обходить это ограничение. Но я не думаю, что вам они нужны.
С памятью работать элементарно - можно создавать объекты и писать в их поля значения.
Строковое:
Числовое:
Ваш К.О.
Программа prog1 вызывает программу prog2. Нужно передать данные из программы prog1 в программу prog2 и наоборот (не через файл). Я хочу сделать это через оперативную память. Для этого надо в программе prog1 выделить эту область, адрес её записать в текстовый файл memory.txt, потом программа prog1 запускает программу prog2, которая считывает значение из файла memory.txt. Затем в программе prog2 запускается поток (thread), который с определённой периодичностью опрашивает эту область памяти на предмет того, что туда поступило какое-то значение. При появлении этого значения в этом буфере памяти программа prog2 производит обработку этого значения.
Также и в программе prog1 можно запустить поток, который также с определённой периодичностью будет опрашивать этот буфер памяти.
Как это сделать?
Программа prog1 вызывает программу prog2. Нужно передать данные из программы prog1 в программу prog2 и наоборот (не через файл).
Как это сделать?
Еще со времен первоюникса существует такое понятие как стандартные потоки ввода-вывода. Воспользуйтесь ими - они какраз для этого предназначены.
А адрес,если всё-таки решите делать по-вашему,можно и через командную строку передать
Как он об этом узнает?Ладно бы по изменению значения,но ведь могут и 2 подряд одинаковых быть
явно человек не может никак определиться, где с памятью проще работать
А решение с помощью потоков ввода-вывода -- кроссплатформенное?
Дело в том, что я разрабатываю кроссплатформенный проект (программы prog1 и prog2), который будет работать и под Windows, и под Unix. (Программа prog2 на C++ будет использовать библиотеку Qt для обеспечения кроссплатформенности её работы).
Дело в том, что я разрабатываю кроссплатформенный проект (программы prog1 и prog2)
ИМХО за кроссплатформенность рановато еще садиться... даже рановато слово то такое употреблять.
Как я понял, лучше всего передавать данные между этими двумя программами через сокеты. Это действительно кроссплатформенное решение.
Как я понял, лучше всего передавать данные между этими двумя программами через сокеты. Это действительно кроссплатформенное решение.
Сокеты к свойствам кроссплатформенности программ относятся мягко говоря отдаленно.
Я уже вроде упоминал о стандартных потоках ввода-вывода. Почему они не подходят? Ну и опять же в Java есть JNI - тут вообще не нужны ни сокеты ни стандартные потоки.