Я хочу заменить текущий процесс Java новым, как это делает Unix exec . Уже был аналогичный вопрос здесь, но я бы предпочел, чтобы решение потребляло как можно меньше памяти (принятый ответ предлагает использовать ClassLoader
s, что может привести к утечке памяти; аналогичным простым решением будет использование другого процесса только для начните с правильного). Конечно, это можно сделать в зависимости от платформы с помощью JNI, и я думаю, что могу сделать это для Unix (и решение для Unix уже существует), но я почти ничего не знаю о соответствующем Windows API. Какую функцию Windows следует вызвать? Кто-нибудь уже сделал это?
Как заменить текущий процесс Java в Windows с помощью JNA/JNI?
27.03.2011
- Вы запускаете другой процесс JVM? Если да, то какая неэффективность памяти вас беспокоит? 27.03.2011
- Использование Unix exec решает все проблемы; замечание о потреблении памяти касается чисто Java-решений. 27.03.2011
Ответы:
1
В Windows есть много подсистем на выбор, которые работают в базовой ОС, поэтому полезно иметь некоторое представление о том, к чему вы стремитесь. Например, если вы можете использовать библиотеку времени выполнения C, вы можете просто использовать _exec()
, которые очень похожи на своих собратьев из Unix. Возможно, вы можете изменить jniexec для работы с окнами, используя их.
27.03.2011
2
API Win32 не включает понятие «exec». POSIX API делает это. Низкоуровневый WinNT API имеет строительные блоки, но использовать их довольно сложно, и, по крайней мере в прошлом, требовалось прибегать к недокументированной функциональности.
27.03.2011
Новые материалы
Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..
Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально
Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..
Частный метод Python: улучшение инкапсуляции и безопасности
Введение
Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..
Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования
Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..
Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv)
Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..
Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..
Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..
_exec
, и что еще? 27.03.2011