当前位置:首页 > 内存 > 正文

java堆内内存不降

  • 内存
  • 2024-04-30 12:08:36
  • 9857

一、Tomcat内存不释放是什么原因1、Java中虽然有垃圾收集器,但是它并不会收集rs等通过jdbc访问数据库产生的垃圾!
2.是因为循环套接字层数太多导致资源无法释放,还是存在无限循环?
不支持EJB组件开发。做j2ee项目时最好使用weblogic服务,执行基本SQL语句时最好使用连接池,而不是使用jdbc桥和odbc。,因为在建立连接的最长过程
解决办法是让Tomcat自己管理内存,在中的@echooff下添加如下代码:
setJAVA_OPTS=%JAVA_OPTS%==ticate=r=。="%CATALINA_HOME%\conf\ties"
然后启动,Tomcat将单独管理内存。


二、java程序出现OutOfMemory的可能性有哪些?用jconsole查看,堆内存有增有减,但是总体一直是增长的Java使用自动垃圾回收机制,不会实时回收内存。
建议手动销毁不必要的对象,尤其是占用大量内存的对象。
在循环中,可以创建大量临时对象。对于未使用的临时对象,建议手动销毁。
尽量少使用类级别的变量,因为这些变量的生命周期与类对象一样长。
必要时使用单例模式,以避免重复初始化具有相同功能的不同对象。


三、java进程消耗内存只增不减问题就出在‘需要重复的任务’!
首先应该明确的是,Java中有两种类型的内存。一种是堆内存,一种是栈内存!内存泄漏发生的时间间隔取决于你在“需要重复的任务”中如何编写代码!如果这里不断地操作变量,肯定存在内存泄漏。这是因为如果您想释放堆栈内存,则必须等待该方法完成才能释放该变量!显然,你的这个手段永远不会有尽头!“jvm的初始化导致这样的结果”不是这样的!jvm的初始化只是将字节码加载到内存中!这不会发生!
呵呵,希望对您有帮助!