Linux下tomcat JVM内存 配置

常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemoryError: Java heap space 一、java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法: 手动设置MaxPermSize大小建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。 二、java.lang.OutOfMemoryError: Java heap space JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64 ,最大空间(-Xmx)是物理内存的1/4 。可以利用JVM提供的-Xmn -Xms…

Continue Reading Linux下tomcat JVM内存 配置

配置tomcat服务器内存大小中的Xms、Xmx、PermSize、MaxPermSize 详解

JVM按照其存储数据的内容将所需内存分配为堆区与非堆区两个部分: 所谓堆区即为通过new的方式创建的对象(类实例)所占用的内存空间, 堆是运行时数据区域; 非堆区即为代码、常量、外部访问(如文件访问流所占资源)等。 配置堆区的(-Xms 、-Xmx、-XX:newSize、-XX:MaxnewSize、-Xmn) 配置非堆区(-XX:PermSize、-XX:MaxPermSize) 一. 堆区配置参数:     1、-Xms :表示java虚拟机堆区内存初始内存分配的大小,虚拟机在启动时向系统申请的内存的大小   2、-Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。 如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。 说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。     -XX:newSize、-XX:MaxnewSize、-Xmn:新生代、中生代、老生代。java中每新new一个对象所占用的内存空间就是新生代的空间,当java垃圾回收机制对堆区进行资源回收后,那些新生代中没有被回收的资源将被转移到中生代,中生代的被转移到老生代。     1、-XX:newSize:表示新生代初始内存的大小,应该小于 -Xms的值;     2、-XX:MaxnewSize:表示新生代可被分配的内存的最大上限;当然这个值应该小于 -Xmx的值;…

Continue Reading 配置tomcat服务器内存大小中的Xms、Xmx、PermSize、MaxPermSize 详解

PVE Proxmox Tips

PVE Proxmox is Linux + KVM (or LXC) virtualization. It is freely available from: https://www.proxmox.com/en/downloads Tested version: pveversion pve-manager/5.1-41/0b958203 (running kernel: 4.13.13-2-pve) Notable highlights: HTML5/js web client - works from…

Continue Reading PVE Proxmox Tips

解决 failed to create bus connection no such file or directory 错误

今天在修改 hostname 使用 sudo hostnamectl set-hostname ds 命令时遇到问题: Failed to create bus connection: No such file or directory 查了一通之后发现缺少 dbus sudo apt-get install dbus 安装 dbus 然后再修改即可,使用 hostnamectl 方式来修改 hostname…

Continue Reading 解决 failed to create bus connection no such file or directory 错误

机器学习书单(外文版)

编者注:澳大利亚机器学习专家、畅销书作者  Jason Brownlee,对机器学习领域的各类优质书籍进行了盘点,汇总成这份阅读指南。在所筛选的学习资源中,这堪称是迄今为止最全面、最完整、权威性比较高的一份 ML 书单,涵盖了最值得学习者、从业者、开发者认真研读的精品书目。这份指南适合多样背景的读者:从想要了解机器学习的普通人,到入门新手,再到高阶开发者和学术研究人员。因此,雷锋网对其进行编译整理,特来与大家分享。 友情提醒:该指南只考虑了英文市场的机器学习图书,适合大家作为国际 ML 读物的参考。而例如周志华老师 《机器学习》等国内优秀著作并没有体现,请读者见谅。 Jason Brownlee: 我喜欢书,对于搞到的每一本机器学习书籍,我都要去读。 我认为,有好的参考资源,是对你心中机器学习谜题进行“解惑”的最快方式。阅读多本书,你就有了看待疑难问题的多种角度。 这份指南中,你会发现机器学习领域最值得一读的好书。 有许多原因促使人们想要机器学习书籍。因此,我采用了三种不同方式对机器学习书籍进行分类、排列,使读者们能按图索骥快速查找。比方说: 依据类别(难易):教材,科普等。依据话题:Python,深度学习等依据出版商:Packt,O’Reilly 等 所有书都包括了亚马逊或京东链接,你可以点击链接了解更多。 如何使用这份指南? 找到一个你最感兴趣的话题浏览所选类别的书目购书、借书、下载从头读到尾重复以上过程 把书摆在家里、办公室显眼的地方,跟你读过那本书是两码事。别瞎搞收藏。 1.0 依据难易水平 1.1 机器学习科普读物 这是面向普通大众的机器学习书目。它们让你体会到机器学习和数据科学的优点和益处,但免去了理论和应用细节。我还加入了一些个人非常喜欢的、偏“统计思维”的流行科普读物。 The Master Algorithm: How…

Continue Reading 机器学习书单(外文版)

linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

在linux下配置shell参数说明 前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell…

Continue Reading linux bash Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

bash和Bourne_shell的区别

Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne…

Continue Reading bash和Bourne_shell的区别

Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义以及linux命令执行返回值代表意义

Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义以及linux命令执行返回值意义 (1) Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义说明 1.1、简要说明 ps: 你在Linux环境下多试下就明白了 $$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) $! Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号) $? 最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误) $- 显示shell使用的当前选项,与set命令功能相同 $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。 $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 $@ 跟$*类似,但是可以当作数组用 $# 添加到Shell的参数个数…

Continue Reading Shell脚本中$0、$?、$!、$$、$*、$#、$@等的意义以及linux命令执行返回值代表意义

Systemd 入门教程:实战篇

上一篇文章,我介绍了 Systemd 的主要命令,今天介绍如何使用它完成一些基本的任务。 一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 $ sudo systemctl enable httpd 上面的命令相当于在/etc/systemd/system目录添加一个符号链接,指向/usr/lib/systemd/system里面的httpd.service文件。 这是因为开机时,Systemd只执行/etc/systemd/system目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果。 二、启动服务 设置开机启动以后,软件并不会立即启动,必须等到下一次开机。如果想现在就运行该软件,那么要执行systemctl start命令。 $ sudo systemctl start httpd 执行上面的命令以后,有可能启动失败,因此要用systemctl status命令查看一下该服务的状态。 $ sudo systemctl status httpd…

Continue Reading Systemd 入门教程:实战篇