总结一下Tomcat遇到的几个问题
会遇到这样的问题,大概率是因为对Tomcat以及jvm不熟,因此每一次碰到问题时,都要把问题记录一下,理解一下为什么会出现这种问题。
解决:使用http://jrebel.yanjiayu.cn:9001/64245b6b-ef68-4bdc-aabf-7f8e85a540e4
后面UUID部分可以替换,在线生成https://www.uuidgenerator.net/
for the Java Runtime Environment to continue. There is insufficient memory
for Chunk::new Native memory allocation (malloc) failed to allocate 1338256 bytes
-
一开始以为是虚拟机内存设置的太少,后面在D:\apache tomcat\apache-tomcat-8.0.51\bin目录下的catalina.bat目录下设置了jvm启动参数-Xss:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m,仍然不行; catalina.bat是Tomcat中最重要的脚本,比如Tomcat的启动和关闭都是catalina.bat完成的。Tomcat会在终端打印catalina log,见图2图1 catalina.bat路径
-
第二步:查看内存,发现内存占用也才百分之50左右; -
最后,查看Tomcat相关进程是否未关闭,手动kill了1099和8080端口的所有进程;最后解决这个问题。
报错提示:Artifact XXX:war: Error during artifact deployment. See server log for details.
解决:网上查了资料,这是一个常见的问题,的确也是我第二次碰到了,但是我依然不知道如何解决,现在可以总结:改变了artifact,然而Tomcat的配置中的artifact没有重新配置,就会报错。
artifact包括两种模式:
-
war:发布模式,先打成war包,再发布 -
war explode:直接把文件夹、视图页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。这种方式支持热部署,一般在开发的时候也是用这种方式;在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来;
我碰到过即使看起来都是war模式,都是一致的,却报这个错误,这是因为修改了artifact模式之后,最后没有在deployment处重新配置。
eg:查看1099端口是否占用,并kill
-
netstat -aon|findstr 1099
发现1099处的pid是19128 -
taskkill -f -pid 19128
-
Tomcat还是很难的,jvm等等里面的内容有待学习; -
很多问题,光看理论是不够的,希望能够多多碰到问题,促使我学习进步。 -
有空会再去回味一下jvm虚拟机那本书