JAVA堆栈在哪里设置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA堆栈在哪里设置?相关的知识,希望对你有一定的参考价值。

JAVA堆栈在哪里设置?

堆栈设置无疑是要适当理解和设置的最重要环节。 过度严格的内存设置要么使Tomcat运行很慢,要么报OutOfMemoryError的错误信息,使工作不正常。内存设置过大,要么因不能平均分配如此大量的内存而无法启动JVM,要么能启动运行正常,但却耗用了超出所需的过量计算机内存,而且计算机上的其他软件也无法运行(因为必要的内存已分配给Tomcat)。 之前关于JVM设置选项详解中显示的-Xmx和-Xms设置值为384MB,但这不一定是计算机的适用内存,即使是适用的,也未必就是Tomcat所要的内存大小。到底多大内存是最适合的,需要经验来决定不同内存的大小。
以小的和大的启动堆栈内存配置Tomcat JVM,都会引发网页响应时间超出Java VM堆栈的最大值的某种问题(如果需要堆栈也跟着增长)。 因为Tomcat正在提供响应时会占用大量的时间重新分配内存,所以如果您不希望性能出现类似的问题,一定要让-Xms和Xmx开关值就是所需内存的相同大小,从而保证JVM在操作过程中从不需要重新分配堆栈内存。
在调用驻留于CATALINA_HOME/bin的Tomcat脚本之前,可以设置JAVA_OPTS环境变量值,以设置这些JVM启动的任意开关。将JAVA_OPTS设置成包含任意开关、以空格分开的字符串。
为了可以连接远程调试器,且想阻调试模式启动Tomcat JVM,那么可以按如下方式设置JAVA_OPTS环境变量:
JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
以上语句允许您通过Tomcat主机上的8000端口连接一个JPDA远程调试器客户端(例如,任何Java IDE),并调试Tomcat JVM中运行的任何代码。您可随意定制所喜欢的端口号。
如果想通过JMX远程客户端连接到Tomcat以实现本地管理和,或监控,请使用下列设置:
JAVA_OPTS="-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jxremote.ssl=false
-Dcom.sun.managerment.jmxremote.authenticate=false"
这些设置允许您在同一台运行Tomcat的机器上使用JMX控制台(如JDK自带的jconsole),如果想远程使用JMX控制台,则使用下列这些设置:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8080
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxmote.password.file=/path/to/pw/file"
这些设置允许您从另一台机器上用TCP 8008端口连接到Tomcat JVM上。 您也可以设置-Dcom.sun.management.jmxremote.authenticate=truen,然后在JMX远程口令文件中设置-Dcom.sun.management.jmxmote.password.file=/path/to/pw/file路径,从而只有您及您授权的用户可以连接到Tomcat JVM上。
参考技术A 打开命令行在命令行用JAVA命令来设置-Xms<size> set initial Java heap size
设置JVM 初始化堆内存大小
-Xmx<size> set maximum Java heap size
设置JVM 最大的堆内存大小
-Xss<size> set java thread stack size
设置JVM 栈内存大小

以上是关于JAVA堆栈在哪里设置?的主要内容,如果未能解决你的问题,请参考以下文章

java线上程序排错经验2 - 线程堆栈分析

java中的堆栈

stm32中的堆栈地址在哪里定义的

java堆栈堆栈的区别

在 java 中用链表创建 dropout 堆栈的麻烦

如何在 Azure 应用服务 java11 tomcat 9 堆栈中配置 java ENV 变量