Tomcat运行Java Web内存溢出的示例分析

技术Tomcat运行Java Web内存溢出的示例分析这篇文章主要介绍Tomcat运行Java Web内存溢出的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如果JVM里运行的程序, 它的

本文主要介绍了Tomcat运行的Java Web中内存溢出的实例分析,非常详细,具有一定的参考价值。感兴趣的朋友一定要看完!

如果在JVM中运行的程序,其内存堆和持久存储区已满,此时程序仍然想创建一个对象实例,垃圾收集器就会启动,试图释放足够的内存来创建这个对象。此时,如果垃圾收集器无法释放足够的内存,它将抛出OutOfMemoryError内存溢出错误。

SUN JVM的内存管理方式:

SUN JVM类似于人类家族,就是在一个地方创建一个对象,在它长时间占用空间之前,给它多次死亡的机会。SUN JVM将分为:

1.年轻一代,包括伊甸园和两个幸存者空间(从空间和到空间)。

2.老一辈(老一代)

3.*** '的一代(永久一代)

Java虚拟机的运行时数据区一般分类如下(不一定是物理划分):

1.堆:主要存储对象实例,由线程共享。

2.栈:主要存储特定线程的方法调用状态,线程是独占的。

3.本地方法栈:存储本地方法的调用状态,线程是独占的。

4.PC register:学过操作系统课程的人都知道线程是独占的。

5.方法区:主要存储类型信息和线程共享。

因此,在抛出内存溢出错误的时候,一般都会提示内存泄露的种类,一般也都是按照区域进行划分:

1.堆内存泄漏java.lang.out内存错误: Java堆空间:大家都很熟悉,可以通过设置-Xms2048m -Xmx4096m来解决。

2.堆栈内存泄漏:当前线程运行过程中维护的中间变量等信息太多,例如,常见的循环导致堆栈溢出。

3.方法区(永久堆)内存泄漏,即java.lang.out内存错误: perm gen space:原因与类型加载和类型卸载直接相关,可以通过设置-xx3360 max new size=256m-xx3360 max perm size=256m来解决。

通常,当服务器内存太小,无法提供大量的访问服务时,可能会缓存过多的数据对象,导致堆内存溢出。当web应用程序继续扩展,加载的lib库达到一定大小(4M)时,很容易报告PermGen OOM,即方法区溢出。

在Linux服务器中将参数写入环境变量:

导出catalina _ opts='-xms 2048m-xmx 4096m '导出Java _ opts='-xx3360max新大小=256m-xx3360max perm大小=256m' xmx * *不要超过服务器物理内存的80%。

以上就是《Tomcat运行的Java Web内存溢出分析》一文的全部内容。感谢您的阅读!希望分享的内容对大家有所帮助。更多相关知识,请关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/143183.html

(0)

相关推荐

  • ajax翻译成什么意思(ajax用英文怎么读)

    技术ajax单词的意思是什么本篇内容主要讲解“ajax单词的意思是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax单词的意思是什么”吧!

    攻略 2021年12月17日
  • 能歌善舞类似的成语,描述女子能歌善舞的成语

    技术能歌善舞类似的成语,描述女子能歌善舞的成语【滴粉搓酥】:粉:脂粉;搓:搓摩;酥:润滑柔美。脸上薄施脂粉能歌善舞类似的成语,用手搓摩润滑。形容女子肌肤柔嫩细腻。【婀娜妩媚】:婀娜:轻盈柔美;妩媚:姿态美好。轻盈柔美的姿

    生活 2021年10月30日
  • 怎么使用Flask构建简单的RESTful服务

    技术怎么使用Flask构建简单的RESTful服务本篇文章给大家分享的是有关怎么使用Flask构建简单的RESTful服务,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一

    攻略 2021年10月29日
  • Ubuntu 16.04如何安装Kinetic

    技术Ubuntu 16.04如何安装Kinetic这篇文章将为大家详细讲解有关Ubuntu 16.04如何安装Kinetic,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、配置软件源

    攻略 2021年11月15日
  • QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列

    技术QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列 QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列一、首先需要给QTableWidget安装事件
    二、重新实现

    礼包 2021年10月27日
  • 罗马数字0,罗马数字里的0怎么写啊

    技术罗马数字0,罗马数字里的0怎么写啊罗马数字没0 一.罗马数字 罗马数字是一种现在应用较少的一种的数量表示方式。它的产生晚于中国甲骨文中的数码,更晚于埃及人的十进位数字。但是,它的产生标志着一种古代文明的进步。大约在两

    生活 2021年10月27日