修改TOMCAT的JVM虚拟机内存大小几种方式

修改TOMCAT的JVM虚拟机内存大小几种方式

Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。

经常会出现Java.lang.OutOfMemoryError: Java heap space 即JVM Heap溢出的错误。

对此有以下几种方法可以选用:

第一种方法:修改catalina.bat/catalina.sh文件

1.linux 下调整tomcat的内存设置修改bin目录下catalina.sh文件在cygwin=false之上添加以下语句JAVA_OPTS="-Xms1024m -Xmx4096m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=2048m"其中-xms为jvm初始化堆的大小,-xmx为jvm堆的最大值2. window 下调整tomcat的内存设置修改bin目录下catalina.bat文件@echo off下追加set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M -XX:MaxNewSize=256M -XX:MaxPermSize=256M3.eclipse下修改外置tomcat的内存设置open launch configuration=>arguments=>vm arguments追加-Xms1024M -Xmx4096M -XX:PermSize=512m -XX:MaxPermSize=2048m

在这里插入图片描述

第二种方法:环境变量中设置

变量名:JAVA_OPTS
变量值:-Xms512m-Xmx512m
(服务器内存大小为32G)
变量值:-Xms512M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=2048M  -XX:ReservedCodeCacheSize=512m

img

前两种方法针对的是bin目录下有catalina.bat的情况(比如直接解压的Tomcat等)并且通过startup.bat/startup.sh启动才生效,
但是有些安装版的Tomcat下没有catalina.bat,这个时候可以采用如下方法,当然这个方法也是最通用的方法:

第三种方法:通过D:\apache-tomcat-8.0.52-windows-x64\apache-tomcat-8.0.52\bin\tomcat8w.exe,配置内存大小

1》打开D:\apache-tomcat-8.0.52-windows-x64\apache-tomcat-8.0.52\bin\tomcat8w.exe,
2》点击Java选项卡,然后将会发现其中有这么两项:InitialmemorypoolMaximummemorypool.Initialmemorypool这个就是初始化设置的内存的大小。
3Maximummemorypool这个是最大内存的大小设置完了就按确定然后再重启TOMCAT你就会发现tomcat中jvm可用的内存改变了。

img

另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现。

如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过3-5秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的80%作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle数据库read only,oracle 报错Linux-x86_64 Error: 30: Read-only file system

本帖最后由 ccton 于 2014-2-18 12:08 编辑[root**** hydata]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 5.6 (Tikanga)[root**** hydata]# uname -aLinux gywsj.hyb210 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU…

sql中in和exist语句的区别?

两者都能实现表功能查询,主要区别如下: 1、适用表的类型不同。 in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外面的表结果集大的情况。 exists是外面的表为驱动表,子查询里面的表为被驱动表&am…

织梦task_do.php,织梦20160906更新后栏目空白问题

织梦发布了20160906更新,dedecmsv5.7已经很久没有更新了,看到这个更新后心中突然感动强烈的兴奋,虽然早有准备这只是个小小的更新!本次更新内容:dede/makehtml_list_action.php,优化更新列表页速度,建议在后…

linux shell 执行目录,bash shell脚本执行的几种方法

bash shell 脚本执行的方法有多种,本文作一个总结,供大家学习参考。假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限。方法一:切换到shell脚本所在的目录(此时,称为工作目录)…

Java 源码--Arrays

前言 数组比较特殊,一个数组属于一个对象,但是它的创建方式却不同于一般对象。 Java中的数组创建数组有以下三种方式: // 第一种 int[] array new int[5]; // 第二种 int[] array {1, 2, 3, 4, 5}; // 第三种 int[] array new int[]{1,…

HashMap原理深入理解

hashing(哈希法)的概念 散列法(Hashing)是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。由于通过更短的哈希值比用原始值进行数据库搜索更快&#…

linux终端转到目录,linux下目录及终端学习

linux目录按调用分为相对路径与绝对路径相对路径:从当前路径下查找查找目标也可使用./调用当前目录下文件或者../调用上一层目录中文件,可通过pwd查看当前路径绝对路径:从根目录出发查找文件。执行cat /etc/passwd命令时由于引用绝对路径&…

HashMap的底层原理

一&#xff1a;HashMap的节点&#xff1a;HashMap是一个集合&#xff0c;键值对的集合,源码中每个节点用Node<K,V>表示 static class Node<K,V> implements Map.Entry<K,V> {final int hash;final K key;V value;Node<K,V> next;Node是一个内部类&…

linux 远程调试文件夹,GDB远程调试开发板程序

一、概述可能我们都熟悉直接在发行版linux系统下调试系统&#xff0c;只需要在安装系统的时候包含了调试工具&#xff0c;直接可以根据gdb进行调试。但对于很多做嵌入式的来说&#xff0c;可能经常需要调试运行在开发板上的应用程序&#xff0c;下面就来说说。先说一下我们的调…

linux必备工具,Linux装机必备工具

分类 名称 类比 说明压缩工具 RAR for Linux WinRAR Linux中压缩解压RAR格式文件的工具联络聊天 EVA QQ 一个界面、使用 类似QQ的聊天工具。MP3 播放 XMMS WinAmp Linux中MP3播放器下载工具 Downloader4X FlashGet Linux中的多线程下载利器流媒体播放 RealPlayer 10 RealPlaye…

hashMap 底层原理+LinkedHashMap 底层原理+常见面试题

1.源码 java1.7 hashMap 底层实现是数组链表 java1.8 对上面进行优化 数组链表红黑树 2.hashmap 是怎么保存数据的。 在hashmap 中有这样一个结构 Node implenets Map.entity{hashkeyvaluenext} 当我们向hashMap 中放入数据时&#xff0c;其实就是一个 Enity{keyvaue}在存之…

linux时间跳变影响,MONGO 集群 修改linux主机时间后的影响

生产环境是一主一从一仲裁3分片的集群&#xff0c;现在发现其中一个节点比当前时间大了好几天&#xff0c;后使用NTP将时间往回调整副本集上。原来时间是5月3日&#xff0c;当前是4月26日&#xff0c;对此进行了调整。[rootcwdtest1 bin]# dateFri May 3 13:20:31 CST 2019[ro…

Java容器解析——HashMap

前言 HashMap是一个散列表&#xff0c;它存储的内容是键值对(key-value)映射。 1 定义 public class HashMap<K,V> extends AbstractMap<K,V>implements Map<K,V>, Cloneable, Serializable {}由HashMap定义可以看出 1&#xff09; HashMap<K,V>表示…

linux教程第五版第三章课后答案,linux 第三章 章习题.doc

填空题Linux_____可以理解为运行在_____之上&#xff0c;回避直接操作_____和配置文件的应用程序。在Linux中常见的两种图形环境是_____和______。在Linux中的配置文件为____和_____。在Fedor8.0中可以通过____窗口进行主题设置。在“自定义主题”对话框中可以对“控件”、“颜…

xp下添加linux启动项,grub.cfg--XP+ Ubuntu10.04双系统安装后无XP启动项

问题描述&#xff1a;Ubuntu 10.04发布了&#xff0c;随即裸机安装了Windows XP &#xff0c;然后用U盘启动盘安装了Ubuntu 10.04,安装速度飞快(不到10分钟吧)&#xff0c;但是装上后发现在grub启动项里没有XP&#xff0c;郁闷了&#xff0c;花了几分钟终于解决了&#xff0c;呵…

HashMap 源码详细分析(JDK1.8)

1. 概述 本篇文章我们来聊聊大家日常开发中常用的一个集合类 - HashMap。HashMap 最早出现在 JDK 1.2中&#xff0c;底层基于散列算法实现。HashMap 允许 null 键和 null 值&#xff0c;在计算哈键的哈希值时&#xff0c;null 键哈希值为 0。HashMap 并不保证键值对的顺序&…

linux错误码61,Linux编程中的错误码列表

有时可以知道错误的数值&#xff0c;但是如果不知道对应于那个宏定义&#xff0c;也很难知道这个错误描述的是什么。我平时这两种方法来确定&#xff1a;在内核源码中搜索和查看头文件。 在内核源码中搜索一般都可以搜到&#xff0c;而且使用source insight的话也很方便&#x…

linux无限刷屏代码,linux下如何实现简单刷屏

今天为了测试我的LCD有没有坏点写了一个简单的刷屏程序&#xff0c;效果还不错&#xff0c;分析给大家。代码如下&#xff1a;#include #include #include #include #include #include #include #include int main(int argc,char *argv[]){int fbfd 0;struct fb_var_screeninf…

mvc:annotation-driven 注解的作用

1.自动注册映射处理器和适配器 这是该注解的主要功能&#xff0c;添加< mvc:annotation-driven/>注解后&#xff0c;容器中会<自动注册HandlerMapping与HandlerAdapter 两个bean。省去手动注册HandlerMapping和HandlerAdapter的步骤。 当配置了< mvc:annotation-…

linux主机熵值过小,tomcat在linux启动应用慢解决方式

问题&#xff1a;o.a.c.util.SessionIdGeneratorBase - Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [2,741] milliseconds原因&#xff1a;拿Tomcat /dev/random做关键词&#xff0c;一堆详细说明。建议看wiki。https://www.cnblogs.…