linux设置内存?tomcat设置内存

设置虚拟内存大小多少合适

虚拟内存设置(解决linux内存不够情况)

背景介绍

Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存的造价是要高于磁盘的,且内存的断电丢失数据也是不能把所有数据和程序都保存在内存中的原因。

既然不能全部使用内存,那数据还有程序不可能一直霸占在内存中。当内存没有可用的,就必须要把内存中不经常运行的程序踢出去。但是踢到哪里去,这时候swap就出现了。

Swap全称为swap place,即交换分区。当内存不够的时候,被踢出的进程被暂时存储到交换区。当需要这条被踢出的进程时,就从交换区重新加载到内存,否则它不会主动交换到真实内存中。

Swap介绍

在详细介绍swap之前,需要知道的是计算机内存分为物理内存与虚拟内存(注意虚拟内存和

虚拟地址空间

的区别)。

物理内存是计算机的实际内存大小,由RAM芯片组成。虚拟内存则是虚拟出来的、使用磁盘代替内存。虚拟内存的出现,让机器内存不够的情况得到部分解决。当程序运行起来由

操作系统

做具体虚拟内存到物理内存的替换和加载(相应的页与段的虚拟内存管理)。这里的虚拟内存即所谓的swap。

当用户提交程序,然后产生进程在机器上运行。机器会判断当前物理内存是否还有空闲允许进程调入内存运行,如果有则直接调入内存进行;如果没有,则会根据优先级选择一个进程挂起,把该进程交换到swap中等待,然后把新的进程调入到内存中运行。根据这种换入和换出,实现了内存的循环利用,让用户感觉不到内存的限制。从这也可以看出swap扮演了一个非常重要的角色,就是暂存被换出的进程。

内存与swap之间是按照

内存页

为单位来交换数据的,一般Linux中页的大小设置为4Kb。而内存与磁盘则是按照

来交换数据的。

Swap的设置

从上可以看出,当物理内存使用完或者达到一定比例之后,我们可以使用swap做临时的内存使用。当物理内存和swap都被使用完那么就会出错,如:out of memory。

对于使用多大比例内存之后开始使用swap,在系统配置文件中可以通过调整参数进行修改。

1

# cat/proc/sys/vm/swappiness2 60

该参数范围为0-100。0就是最大限度使用内存,尽量不使用swap;100是积极使用swap。

物理内存无法更改,所以swap大小的设置将会影响应用能否正常运行。swap大小的确定,根据Centos官网介绍可以得出如下公式:

1 M= Amount of RAMinGB, and S= Amount of swapinGB, then If M 2, S= M*2 Else S= M+ 2

注意:最小不应小于32M。

Swap分区的数量对性能也有很大的影响。因为swap毕竟还是以磁盘来伪装成内存,交换的操作是磁盘IO的操作而不是内存的ioad与store操作。如果有多个swap交换区,每个swap会有一定的优先级,该优先级也可以调整。swap空间的分配会以轮流的方式操作于所有的swap,这样会大大均衡IO的负载,加快swap交换的速度。

swap相关命令

1

# swapon-s#查看当前swap的使用情况2 Filename Type Size Used Priority3/dev/sda3 partition 2064376 0-14

# cat/proc/swaps#查看当前swap的使用情况5 Filename Type Size Used Priority6/dev/sda3 partition 2064376 0-17

# swapoff/dev/sda3#关闭相应的swap_disk_name8

# swapon-s9 Filename Type Size Used Priority10

# swapon/dev/sda3#启动相应的swap_disk_name11

# swapon-s12 Filename Type Size Used Priority13/dev/sda3 partition 2064376 0-1

虚拟内存设置

1、检查 Swap空间

在设置 Swap文件之前,有必要先检查一下系统里有没有既存的 Swap文件。

运行以下命令:

swapon-s

如果返回的信息概要是空的,则表示 Swap文件不存在。

2、检查文件系统

在设置 Swap文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap。运行以下命令:

df-hal

检查返回的信息,还剩余足够的硬盘空间即可。

3、创建并允许 Swap文件

下面使用 dd命令来创建 Swap文件。

dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024k

这样就建立一个/tmp/swapfile的分区文件,大小为1G。

参数解读:

if=文件名:输入文件名,缺省为标准输入。即指定源文件。 if=input file

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。 of=output file

bs=bytes:同时设置读入/输出的块大小为bytes个字节

count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

4、格式化并激活 Swap文件

上面已经创建好 Swap文件,还需要格式化后才能使用。运行命令:

dd if=/dev/zero of=/tmp/swapfile bs=1024 count=1024k

激活 Swap,运行命令:

swapon/tmp/swapfile

以上步骤做完,再次运行命令:

swapon-s

你会发现返回的信息概要:

Filename Type Size Used Priority/tmp/swapfile file 524284 0-1

如果要机器重启的时候自动挂载 Swap,那么还需要修改 fstab配置。

用 vim打开/etc/fstab文件,在其最后添加如下一行:

/tmp/swapfile swap swap defaults 0 0

最后,赋予 Swap文件适当的权限:

chown root:root/tmp/swapfilechmod 600/tmp/swapfile

同时,我们还可以修改 Linux Swap空间的 swappiness,降低对硬盘的缓存。

Linux会使用硬盘的一部分做为 Swap分区,用来进行进程调度–进程是正在运行的程序–把当前不用的进程调成‘等待(standby)’,甚至‘睡眠(sleep)’,一旦要用,再调成‘活动(active)’,睡眠的进程就会在 Swap分区,把内存空出来让给‘活动’的进程。

如果内存够大,应当告诉 Linux不必太多的使用 Swap分区,可以通过修改 swappiness的参数来设置。swappiness=0的时候表示最大限度使用物理内存,然后才是 Swap空间,swappiness=100的时候表示积极的使用 Swap分区,并且把内存上的数据及时的搬运到 Swap空间里面。

在 CentOS中,swappiness的默认值是60。

通过以下命令可以看到:

cat/proc/sys/vm/swappiness

返回值60

我们可以调整 swappiness的值到一个合适的参数,从而达到最优化使用 Swap的目的。这里我们将其设为10。这样你就将值由60改为10,这可以大大降低系统对于swap的写入,建议内存为512M或更多的朋友采用此方法。如你你发现你对于swap的使用极少,可以将值设为0。这并不会禁止你对swap的使用,而是使你的系统对于swap的写入尽可能的少,同时尽可能多的使用你的实际内存。这对于你在切换应用程序时有着巨大的作用,因为这样的话它们是在物理内存而非swap分区中。

使用 sysctl命令:

sysctl vm.swappiness=10

但是这只是临时性的修改,在你重启系统后会恢复默认的60,要永久设置,还需要在 vim中修改sysctl.conf:

vi/etc/sysctl.conf

在这个文档的最后加上这样一行:

# Search for the vm.swappiness setting. Uncomment and change it as necessary.vm.swappiness=10

输入:x,保存退出 vim。

这样一来,Swap分区重启后都会生效了。

Linux里面JVM内存怎么设置

jar包启动时指定对应参数,比如我的工程启动命令就是这样的

启动命令,打码部分为工程名

常见参数如下

1.-Xms:初始堆大小。只要启动,就占用的堆大小。

2.-Xmx:最大堆大小。java.lang.OutOfMemoryError:Java heap这个错误可以通过配置-Xms和-Xmx参数来设置。

3.-Xss:栈大小分配。栈是每个线程私有的区域,通常只有几百K大小,决定了函数调用的深度,而局部变量、参数都分配到栈上。

当出现大量局部变量,递归时,会发生栈空间OOM(java.lang.StackOverflowError)之类的错误。

4.XX:NewSize:设置新生代大小的绝对值。

5.-XX:NewRatio:设置年轻代和年老代的比值。比如设置为3,则新生代:老年代=1:3,新生代占总heap的1/4。

6.-XX:MaxPermSize:设置持久代大小。

java.lang.OutOfMemoryError:PermGenspace这个OOM错误需要合理调大PermSize和MaxPermSize大小。

7.-XX:SurvivorRatio:年轻代中Eden区与两个Survivor区的比值。注意,Survivor区有form和to两个。比如设置为8时,那么eden:form:to=8:1:1。

8.-XX:HeapDumpOnOutOfMemoryError:发生OOM时转储堆到文件,这是一个非常好的诊断方法。

9.-XX:HeapDumpPath:导出堆的转储文件路径。

10.-XX:OnOutOfMemoryError:OOM时,执行一个脚本,比如发送邮件报警,重启程序。后面跟着一个脚本的路径。

linux设置内存大小linux设置内存

虚拟机上的Linux怎么修改Linux内存?

修改虚拟机中linux的内存,要看具体使用的虚拟机,不同的虚拟机在设置方法上略有不同,一般大同小异。现在常用的虚拟机一般是vmware和virtualbox。这里以virtualbox为例简要说明操作步骤,仅供参考。

1、运行virtualbox后,在要设置内存的虚拟机上右键选择“设置”。也可以选中虚拟机后,点击工具栏上的”设置“。

2、接下来点击左侧的”系统“,会看到内存大小设置,自行增加或者减小内存大小后,点击”ok"键即可。

win1064位8g内存虚拟内存怎么设置?

比较合理和常用的设置是:最低可设置512M或是1024M,最高设置为物理内存1.5倍左右,也就是1024*8*1.5=12288M。win10系统如果是32位的,那么只支持3.2G,虚拟内存设置为4800;如果是64位的,那么支持3.2G以上的内存,虚拟内存设置为12000。虚拟内存一般设置为物理内存的1.5倍。虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。

目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。

Windows8/8.1操作系统如出现开机时卡在Windows徽标页面,无法进入系统,必须强制关机再重启才能打开时,可适当调整虚拟内存设置解决。

手动设置找出最合适的虚拟内存大小范围值后,①用右键点击桌面上的“我的电脑”图标,在出现的右键菜单中选“属性”选项打开“系统属性”窗口。

在窗口中点击“高级”选项卡,出现高级设置的对话框②点击“性能”区域的“设置”按钮,在出现的“性能选项”窗口中选择“高级”选项卡,打开其对话框。

③在该对话框中可看到关于虚拟内存的区域,点击“更改”按钮进入“虚拟内存”的设置窗口。

选择一个有较大空闲容量的分区,勾选“自定义大小”前的复选框,将具体数值填入“初始大小”、“最大值”栏中,而后依次点击“设置→确定”按钮即可,最后重新启动计算机使虚拟内存设置生效。

linux下查看内存的命令?

top命令能显示系统内存。目前常用的Linux下查看内容的专用工具是free命令。下面是对内存查看free命令输出内容的解释:

total:总计物理内存的大小。

used:已使用多大。

free:可用有多少。

Shared:多个进程共享的内存总额。

Buffers/cached:磁盘缓存的大小。熟悉linux基础命令,可以看看《linux就该这么学》一书。

linux如何分配4g内存?

linux操作系统中,你不需要专门去分配内存的,这个工作由操作系统帮你完成。但是32位的操作系统是没法管理超过4G内存的。如果你的电脑内存超过了4G,应该把linux操作系统的版本换成64位的。在编写程序的时候,可能需要考虑内存分配的问题,但是这个和操作系统无关。

虚拟机的内存和cpu数量设置?

内存设置:你装的是linux版本的还是windows版本的?如果你宿主机内存够大,比如说2G或4G。那你可以根据实际情况把虚拟机的内存调大些,

阅读剩余
THE END