【发布时间】:2015-10-31 02:44:44
【问题描述】:
CentOS 7 服务器安装了 Java 7 和 tomcat 8。我需要设置 permgen 空间,但是在命令行中键入 printenv 不会将 JAVA_OPTS 包含在环境变量列表中。我输入了ps 来获取正在运行的进程列表,然后我输入了jmap -heap <pid> 以及来自正在运行的java 进程的pid,其中列出了MaxPermSize 和PermSize 的值以及其他值。
如何为这些属性设置新值,以便在系统重新启动等时保持不变?如果有问题的服务器有,我犹豫是否只创建一个 JAVA_OPTS 变量它存储这些持久值的另一个地方。
编辑:
按照@ChrisRobak 的建议,我去搜索tomcat conf 文件。没有/etc/tomcat 目录,但/etc 有名为/etc/java、/etc/.java、/etc/jvm 和/etc/jvm-common 的目录。另外,tomcat的配置如下:
[root@myserver tomcat]# cd /opt/tomcat/conf
[root@myserver conf]# ls -al
total 280
drwxrwx---. 3 root root 4096 Oct 30 20:02 .
drwxr-xr-x. 14 root root 4096 Oct 30 20:58 ..
drwxrwx---. 7 root root 4096 Oct 30 21:00 Catalina
-rwxrwx---. 1 root root 12624 Nov 2 2014 catalina.policy
-rwxrwx---. 1 root root 6560 Nov 2 2014 catalina.properties
-rwxrwx---. 1 root root 1852 Jan 2 2015 context.xml
-rwxrwx---. 1 root root 3451 Nov 2 2014 logging.properties
-rwxr-x--- 1 root root 5018 Oct 30 21:52 server.xml
-rwxrwx---. 1 root root 1783 Nov 2 2014 tomcat-users.xml
-rwxrwx---. 1 root root 1888 Nov 2 2014 tomcat-users.xsd
-rwxrwx---. 1 root root 168082 Nov 2 2014 web.xml
[root@myserver conf]#
我应该查看哪个文件?
或者,是否有一种命令行方式来设置 Java 选项,不仅可以持久,而且不会因与配置文件冲突而产生副作用? 如果我认为服务器的其余部分会默认使用JAVA_OPTS,我会创建一个JAVA_OPTS 变量。
回答?
当所有配置文件和脚本似乎都没有设置 JAVA_OPTS 时,我最终决定在 CENTOS 7 终端中输入以下内容:
export JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m"
结果是 MaxPermSize 已被重置。如果其他人对 CentOS 7 有比这更好的特定答案,请提醒我。
【问题讨论】:
-
IIRC,Java8 不使用 PermGen。
-
@Jayan 这是一个错字。它是 Java 7。我更新了我的 OP 并根据另一个用户的建议添加了编辑。您还有其他想法吗?
-
@Jayan 电脑上没有
tomcat.conf。当我创建/opt/tomcat/bin/setenv.sh并重新启动tomcat时,MaxPermSize没有改变,所以我删除了它。我现在将打开catalina.sh并开始审查它,但我只是猜测。 -
@Jayan
JAVA_OPTS没有在我的catalina.sh中设置,尽管它被该文件中的一些eval命令调用。我对编辑catalina.sh because there is so much that could go wrong. I typedgrep "JAVA_OPTS` 犹豫不决,但是该命令在很长一段时间后都没有返回任何内容,也许永远不会返回任何内容。