Лично я никогда не слышал о способе настройки адреса пула выделения. Если есть такая настройка, она, вероятно, очень неясна.
Единственный способ убедиться в этом - взглянуть на источник JDK / JRE, доступный по адресу http://hg.openjdk.java.net/. Если параметр NULL
жестко запрограммирован, вам не повезло.
Для альтернативного решения, если вы не можете исправить некорректно работающий нативный код:
Вы можете написать небольшую собственную программу для вызова вашего собственного кода, а затем вызвать программу из Java (через Runtime.exec
). Таким образом, непослушный код получает свой собственный процесс ОС с отдельным адресным пространством. Конечно, это возможно только в том случае, если между нативным кодом и Java не слишком много обратной связи.
Или превратить код в небольшой сервер, который работает параллельно с вашим Java-приложением, чтобы они могли взаимодействовать ...
Дополнительное примечание:
Я только что заметил на странице справки mmap
, что присвоение адреса mmap
не обязательно поддерживается:
MAP_FIXED: точно интерпретировать адрес.
[...]
Это определяется реализацией
MAP_FIXED должен поддерживаться.
MAP_FIXED должен поддерживаться на
XSI-совместимые системы. [...] Когда
MAP_FIXED не установлен,
реализация использует адрес в
определяемый реализацией способ
прибыть в год.
http://linux.die.net/man/3/mmap
Таким образом, даже если вам удастся разрешить JVM вызвать mmap
по определенному адресу, это все равно может не сработать.