Разверните Spring Boot в Tomcat

Да, вы правы, ваш пример не наносит вреда (по крайней мере, не в большинстве современных операционных систем). Вся память, выделенная вашим процессом, будет восстановлена ​​операционной системой после завершения процесса.

Источник: Распределение и мифы GC (оповещение PostScript!) [/ ​​g2]

Миф о распределении 4: программы, не содержащие мусор, должны всегда освобождать всю память они выделяют.

Истина: пропущенные освобождения в часто исполняемом коде вызывают растущие утечки. Они редко приемлемы. но программы, которые сохраняют большую часть памяти, до выхода программы часто работают лучше без какого-либо промежуточного освобождения. Malloc намного проще реализовать, если нет свободного.

В большинстве случаев освобождение памяти непосредственно перед выходом программы бессмысленно. ОС все равно вернет его. Свободная воля коснется и занесет страницы в мертвые объекты; ОС не будет.

Следствие: будьте осторожны с «датчиками утечки», которые подсчитывают распределения. Некоторые «утечки» хороши!

blockquote>

Тем не менее, вы действительно должны стараться избегать утечек памяти!

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

29
задан Alexander Farber 27 October 2016 в 13:43
поделиться

2 ответа

Глава Упаковка исполняемых файлов jar и war в справочной документации Spring Boot гласит:

Чтобы создать файл war, который может быть как исполняемым, так и развертываемым, во внешний контейнер необходимо пометить зависимости встроенного контейнера как «предоставленные», например:

<?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!-- ... -->
    <packaging>war</packaging>
    <!-- ... -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- ... -->
    </dependencies>
</project>
35
ответ дан James 27 October 2016 в 13:43
поделиться

Когда мы выбираем Spring Boot, мы не хотим производить WAR. Из корневой страницы :

Spring Boot makes it easy to create stand-alone [...] 
Applications that can you can "just run".
Embed Tomcat or Jetty directly (no need to deploy WAR files)

РЕДАКТИРОВАНИЕ: Итак, если целью является «попробовать Spring Boot», я предлагаю не создавать файл WAR.

Если вам действительно нужно создать WAR-файл (сохраняйте код, созданный для SpringBoot и создавайте файл, который вы можете запускать в любом стандартном контейнере сервлетов ...), тогда вам следует прочитать документацию Преобразование JAR-файла Spring Boot Применение к войне .

Вы включили spring-boot-maven-plugin в процесс сборки? Вы не описали этот шаг ...

0
ответ дан mcoolive 27 October 2016 в 13:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: