小编And*_*rew的帖子

Wildfly 8.2.1上部署的Java 8应用程序的元空间内存流量问题

问题说明

我注意到我们在Wildfly 8.2.1上的每个Java8应用程序的部署使用了大约30-40 MB的Metaspace内存池.这很好,但事实是,一旦我重新部署相同的应用程序,Metaspace内存使用量将增加相同的30-40 MB,而旧的已分配的内存不会被释放.

我甚至都没有注意到它,但问题是我们有大约20个应用程序,并且我不时需要同时重新部署其中的10个应用程序.这反过来会导致一幅可怕的画面.

在此输入图像描述 基本上显示的是~10个应用程序的2次重新部署.

我不确定为什么GC无法释放分配给旧类的内存.这个服务器总共有16GB的物理内存,所以我可以重新部署所有应用程序,最多20-40次就是这样.应用服务器将达到限制并将停止响应任何命令.

所以,如果有人能帮我理解实际问题,我将非常感激:

  1. 这是Java8问题吗?(jdk 1.8.0_40-b26)
  2. 它是Wildfly 8.2.1的问题吗?
  3. 或者答案尽可能简单,原因是我的代码库?如果是这样,那么请你指导我可能是什么原因?

有关我的代码库的更多细节

1)与Wildfly一起使用2个独立的HornetQ服务器,每个应用程序使用~5个通道,每个通道至少有5个并发消费者.这反过来导致每个应用程序至少25个线程,总共至少25*20 = 500个线程.

2)对于所有低级JMS操作,我使用Spring JMS.

java memory-leaks jms wildfly metaspace

7
推荐指数
1
解决办法
5552
查看次数

Maven ear插件有多个工件内容

让我们假设我有一个Web项目和几个可以部署的环境.我希望Maven能够同时构建多个工件(例如,对于开发人员来说).我有一个A-war模块和一个A-ear模块(包含A-war).每个战争工件都可以包含仅与其环境相关的信息.

首先,我为A-war模块配置了一个pom.xml文件:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <executions>
                    <execution>
                        <id>package-prod</id>
                        <phase>package</phase>
                        <configuration>
                            <classifier>prod</classifier>
                            <webappDirectory>${project.build.directory}/${project.build.finalName}-prod</webappDirectory>
                            <webResources>
                                <resource>
                                    <directory>src/env/prod</directory>
                                </resource>
                            </webResources>
                        </configuration>
                        <goals>
                            <goal>war</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>package-dev</id>
                        <phase>package</phase>
                        <configuration>
                            <classifier>dev</classifier>
                            <webappDirectory>${project.build.directory}/${project.build.finalName}-dev</webappDirectory>
                            <webResources>
                                <resource>
                                    <directory>src/env/dev</directory>
                                </resource>
                            </webResources>
                        </configuration>
                        <goals>
                            <goal>war</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
    <finalName>A-war</finalName>
</build>
Run Code Online (Sandbox Code Playgroud)

这很好 - 在目标文件夹中创建2*war*s:A-war-prod和A-war-dev.

现在我想为这些战争中的每一个构建神器.

以下是A-ear模块中pom.xml的主要内容:

<dependencies>
    <dependency>
        <groupId>gr.id</groupId>
        <artifactId>A-war</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <classifier>prod</classifier>
        <scope>provided</scope>
        <type>war</type>
    </dependency>
    <dependency>
        <groupId>gr.id</groupId>
        <artifactId>A-war</artifactId>
        <classifier>dev</classifier>
        <version>0.0.1-SNAPSHOT</version>
        <scope>provided</scope>
        <type>war</type>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId> …
Run Code Online (Sandbox Code Playgroud)

environment ear war maven

3
推荐指数
1
解决办法
4180
查看次数

标签 统计

ear ×1

environment ×1

java ×1

jms ×1

maven ×1

memory-leaks ×1

metaspace ×1

war ×1

wildfly ×1