一、堆内存相关配置
创新互联建站服务项目包括夏邑网站建设、夏邑网站制作、夏邑网页制作以及夏邑网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,夏邑网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到夏邑省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
设置堆初始值
指令1:-Xms2g
指令2:-XX:InitialHeapSize=2048m
设置堆区最大值
指令1:`-Xmx2g`
指令2: -XX:MaxHeapSize=2048m
缩小堆内存的时机
-XX:MaxHeapFreeRatio=70//堆内存使用率大于70时扩张堆内存,xms=xmx时该参数无效,默认值70
扩张堆内存的时机
-XX:MinHeapFreeRatio=40//堆内存使用率小于40时缩减堆内存,xms=xmx时该参数无效,默认值40
新生代内存配置
指令1:-Xmn512m
指令2:-XX:MaxNewSize=512m
2个survivor区和Eden区大小比率
指令:-XX:SurvivorRatio=6 //S区和Eden区占新生代比率为1:6,两个S区2:6
新生代和老年代的占比
-XX:NewRatio=4 //表示新生代:老年代 = 1:4 即老年代占整个堆的4/5;默认值=2
二、方法区内存配置常用参数
初始化的Metaspace大小,
-XX:MetaspaceSize :
Metaspace最大值
-XX:MaxMetaspaceSize
三、线程栈内存配置常用参数
每个线程栈最大值
指令1:-Xss256k
指令2:-XX:ThreadStackSize=256k
注意:
栈设置太大,会导致线程创建减少。
栈设置小,会导致深入不够,深度的递归会导致栈溢出。
建议栈深度设置在3000-5000
四、配置垃圾收集器
Serial垃圾收集器(新生代)
开启:-XX:+UseSerialGC
关闭:-XX:-UseSerialGC
//新生代使用Serial 老年代则使用SerialOld
ParNew垃圾收集器(新生代)
开启 -XX:+UseParNewGC
关闭 -XX:-UseParNewGC
//新生代使用功能ParNew 老年代则使用功能CMS
Parallel Scavenge收集器(新生代)
开启 -XX:+UseParallelOldGC
关闭 -XX:-UseParallelOldGC
//新生代使用功能Parallel Scavenge 老年代将会使用Parallel Old收集器
ParallelOl垃圾收集器(老年代)
开启 -XX:+UseParallelGC
关闭 -XX:-UseParallelGC
//新生代使用功能Parallel Scavenge 老年代将会使用Parallel Old收集器
CMS垃圾收集器(老年代)
开启 -XX:+UseConcMarkSweepGC
关闭 -XX:-UseConcMarkSweepGC
G1垃圾收集器
开启 -XX:+UseG1GC
关闭 -XX:-UseG1GC
五、GC策略配置
GC并行执行线程数
-XX:ParallelGCThreads=16
新生代可容纳的最大对象
-XX:PretenureSizeThreshold=1000000 //大于此值的对象直接会分配到老年代,设置为0则没有限制。 //避免在Eden区和Survivor区发生大量的内存复制,该参数只对Serial和ParNew收集器有效,Parallel Scavenge并不认识该参数
进入老年代的GC年龄
进入老年代最小的GC年龄
-XX:InitialTenuringThreshol=7 //年轻代对象转换为老年代对象最小年龄值,默认值7,对象在坚持过一次Minor GC之后,年龄就加1,每个对象在坚持过一次Minor GC之后,年龄就增加1
进入老年代最大的GC年龄
-XX:MaxTenuringThreshold=15 //年轻代对象转换为老年代对象最大年龄值,默认值15
六、GC日志信息配置
配置GC文件路径
-Xloggc:/data/gclog/gc.log//固定路径名称生成 -Xloggc:/home/GCEASY/gc-%t.log //根据时间生成
滚动生成日志
日志文件达到一定大小后,生成另一个文件。须配置Xloggc
开启 -XX:+UseGCLogFileRotation
关闭 -XX:-UseGCLogFileRotation
-XX:NumberOfGCLogFiles=4 //滚动GC日志文件数,默认0,不滚动 -XX:GCLogFileSize=100k //GC文件滚动大小,需配置UseGCLogFileRotation,设置为0表示仅通过jcmd命令触发
你输入指令, vi -- help然后就会显示,或者输入man vi也是一样的,:qx 开始记录宏,并将结果存入寄存器x
q 退出记录模式
@x 播放记录在x寄存器中的宏命令
稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模
式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次。这个在文本的批处理中是非常有用的。
同时编辑多个文件
在vim众多的插件中,有一个叫minibuffer的插件,就是下面所说的标签页功能了,可以支持同时编辑多个文件。
标签命令
:tabe fn 在一个新的标签页中编辑文件fn
gt 切换到下一个标签页
gT 切换到上一个标签页
:tabr 切换到第一个标签页
:tabl 切换到最后一个标签页
:tabm [N] 把当前tab移动到第N个tab之后
对,正如你所想象的那样,跟eclipse, ue等的标签页是一个意思!
窗口命令
ctrl+w s 水平分割窗口
ctrl+w w 切换窗口
ctrl+w q 退出当前窗口(由于同时有多个文件,此命令不会影响其他窗口)
ctrl+w v 垂直分割窗口
其他
vim在保存之前不会对文件做实际的修改,只是加载到缓冲区中,对文件的编辑其实是对缓冲区的编辑,直到:w时才会存入物理文件。
:e file 把file加载到新的缓冲区中
:bn 跳转到下一个缓冲区
:bd 删除缓冲区(关闭文件)
:sp fn 分割窗口,并将fn加载到新的窗口中
退出编辑器
:w 将缓冲区写入文件,即保存修改
:wq 保存修改并退出
:x 保存修改并退出
:q 退出,如果对缓冲区进行过修改,则会提示
:q! 强制退出,放弃修改
查找替换
/pattern 向后搜索字符串pattern
?pattern 向前搜索字符串pattern
n 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个)
N 上一个匹配(同上)
:%s/old/new/g 搜索整个文件,将所有的old替换为new
:%s/old/new/gc 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换
复制粘贴
dd 删除光标所在行
dw 删除一个字(word)
x 删除当前字符
X 删除前一个字符
D 删除到行末
yy 复制一行,此命令前可跟数字,标识复制多行,如6yy,表示从当前行开始复制6行
yw 复制一个字
y$ 复制到行末
p 粘贴粘贴板的内容到当前行的下面
P 粘贴粘贴板的内容到当前行的上面
]p 有缩进的粘贴,vim会自动调节代码的缩进
"a 将内容放入/存入a寄存器,可以支持多粘贴板
附:比如常用的一个寄存器就是系统寄存器,名称为+,所以从系统粘贴板粘贴到vim中的命令为"+p,注意此处的+不表示操作符,二十一个寄存器。
移动光标
在vim中移动光标跟其他的编辑器中有很大的区别,不过一旦学会了,就会飞速的在文本中移动了。
h,j,k,l 上,下,左,右
ctrl-f 上翻一页
ctrl-b 下翻一页
% 跳到与当前括号匹配的括号处,如当前在{,则跳转到与之匹配的}处
w 跳到下一个字首,按标点或单词分割
W 跳到下一个字首,长跳,如end-of-line被认为是一个字
e 跳到下一个字尾
E 跳到下一个字尾,长跳
b 跳到上一个字
B 跳到上一个字,长跳
0 跳至行首,不管有无缩进,就是跳到第0个字符
^ 跳至行首的第一个字符
$ 跳至行尾
gg 跳至文件的第一行
gd 跳至当前光标所在的变量的声明处
[N]G 跳到第N行,如0G,就等价于gg,100G就是第100行
fx 在当前行中找x字符,找到了就跳转至
; 重复上一个f命令,而不用重复的输入fx
tx 与fx类似,但是只是跳转到x的前一个字符处
Fx 跟fx的方向相反
),( 跳转到上/下一个语句
* 查找光标所在处的单词,向下查找
# 查找光标所在处的单词,向上查找
`. 跳转至上次编辑位置
在屏幕上移动
H 移动光标到当前屏幕上最上边的一行
M 移动光标到当前屏幕上中间的一行
L 移动光标到当前屏幕上最下边的一行
书签
ma 把当前位置存成标签a
`a 跳转到标签a处
编辑
r 替换一个字符
J 将下一行和当前行连接为一行
cc 删除当前行并进入编辑模式
cw 删除当前字,并进入编辑模式
c$ 擦除从当前位置至行末的内容,并进入编辑模式
s 删除当前字符并进入编辑模式
S 删除光标所在行并进入编辑模式
xp 交换当前字符和下一个字符
u 撤销
ctrl+r 重做
. 重复上一个编辑命令
~ 切换大小写,当前字符
g~iw 切换当前字的大小写
gUiw 将当前字变成大写
guiw 将当前字变成小写
将当前行右移一个单位
将当前行左移一个单位(一个tab符)
== 自动缩进当前行
插入模式
i 从当前光标处进入插入模式
I 进入插入模式,并置光标于行首
a 追加模式,置光标于当前光标之后
A 追加模式,置光标于行末
o 在当前行之下新加一行,并进入插入模式
O 在当前行之上新加一行,并进入插入模式
Esc 退出插入模式
可视模式
标记文本
v 进入可视模式,单字符模式
V 进入可视模式,行模式
ctrl+v 进入可视模式,列模式,类似于UE的列模式
o 跳转光标到选中块的另一个端点
U 将选中块中的内容转成大写
O 跳转光标到块的另一个端点
aw 选中一个字
ab 选中括号中的所有内容,包括括号本身
aB 选中{}括号中的所有内容
ib 选中括号中的内容,不含括号
iB 选中{}中的内容,不含{}
对标记进行动作
块右移
块左移
y 复制块
d 删除块
~ 切换块中内容的大小写
Linux 使用jstat命令查看jvm的GC情况
命令格式
jstat命令命令格式:
jstat [Options] vmid[interval] [count]
参数说明:
Options,选项,我们一般使用 -gcutil 查看gc情况
vmid
,VM的进程号,即当前运行的java进程号
interval
,间隔时间,单位为秒或者毫秒
count
,打印次数,如果缺省则打印无数次
示例说明
示例
通常运行命令如下:
jstat -gc 12538 5000
即会每5秒一次显示进程号为12538的java进成的GC情况,
显示内容如下图:
结果说明
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C
:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U
:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U
:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC
:年轻代中Eden(伊甸园)的容量 (字节)
EU
:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC
:Old代的容量 (字节)
OU
:Old代目前已使用空间 (字节)
PC
:Perm(持久代)的容量 (字节)
PU
:Perm(持久代)目前已使用空间 (字节)
YGC
:从应用程序启动到采样时年轻代中gc次数
YGCT
:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC
:从应用程序启动到采样时old代(全gc)gc次数
FGCT
:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT
:从应用程序启动到采样时gc用的总时间(s)
NGCMN
:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX
:年轻代(young)的最大容量 (字节)
NGC
:年轻代(young)中当前的容量 (字节)
OGCMN
:old代中初始化(最小)的大小 (字节)
OGCMX
:old代的最大容量 (字节)
OGC
:old代当前新生成的容量 (字节)
PGCMN
:perm代中初始化(最小)的大小 (字节)
PGCMX
:perm代的最大容量 (字节)
PGC
:perm代当前新生成的容量 (字节)
S0
:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1
:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E
:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O
:old代已使用的占当前容量百分比
P
:perm代已使用的占当前容量百分比
S0CMX
:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX
:年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX
:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS
:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT
: 持有次数限制
MTT
: 最大持有次数限制
linux基本命令:(其他的太多了,自己去百度吧)
ls:
-l:显示详细信息
-a:显示隐藏文件和其他所有文件(以.开头的为隐藏文件)
-t:安时间排序
-h:以KB MB 等单位显示
-d:只列出目录名,不列出其他内容
-R:递归显示所有目录及子目录
-lath:选项可以合并
pwd:显示当前所在位置
cd:转换目录
cd ..:返回上一级目录
cd -:回到上一次操作的目录
mkdir: 建目录
-v:显示所建目录,相同可用{}:mkdir -v dir{1,2,3}
-p:创建多级目录
rmdir:删除空目录
rm:删除
-f:强制删除无提示
-r:可删除目录
mv:移动 重命名
touch:建立空文件
file:验证文件或目录的类型
cp:复制,粘贴 (copy)改名
cp 原文件 目标文件
-r:可复制目录
ssh 192.168.1.33 远程登录
跨机拷贝:scp -r /root/Server/ 192.168.1.253:/dcw
man 命令:帮助
alias:查看是否有别名
去掉别名用完整路径
eg:
#which cp
#/bin/cp a.text b.text 或 \cp a.text b.text
或 在 /root/.bashrc 中去掉#alias cp='cp -i',后#unalias cp
查看某文件前4行内容并显示文件路径和文件名
[/usr/local/nagios]#ls /etc/vsftpd/vsftpd.conf head -n 4 /etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd.conf
# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
linux tee 命令详解
功能说明:读取标准输入的数据,并将其内容输出成文件。
语法:tee [-ai][--help][--version][文件...]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参数:
-a或--append 附加到既有文件的后面,而非覆盖它.
-i-i或--ignore-interrupts 忽略中断信号。
--help 在线帮助。
--version 显示版本信息。
cat /etc/sysconfig/network
-n:查看行号信息
more:空格翻页 回车换行
less:上下键翻页 可以反复看(可以回翻页)
head:显示前几行
head -5 install.log 显示前5行
tail:显示后几行
tail -f 动态更新
grep:查看文件中包含关键字的一行
#grep --color=tty dump intstall.log 彩色显示
正则表达式:^root 以root为开头(^)
root$,以root结尾($)
-v:不包括的几行(取反)
grep -n -v ^# /etc/vsftpd/vsftpd.conf
:r /root/install.log 追加读入一个文件
:e 读入文件
:e! 重新读入
:q 不保存 :q!强制退出
:w 保存 :qw保存退出 :wq! 强制保存退出
在未写入状态时:
h 左 k 上 j下 l 右
shift+4($) 光标移到行尾 shift+6(^) 光标移到行头
:50 来到50行
#vim /root/install.log +50(n)来到50行
:set nu 显示行号
:set nonu 取消行号
shift+g 来到行尾
n(无显示)+G:直接来到n行
shift+a:自动来到行尾输入
:50,100 w bb.txt 保存50到100行的内容到bb.txt中
r :替换单个字符 R:替换全行
shift+o:向上插入 o:向下插入
yy 复制 p 粘贴
(n)2yy 复制前两行
y^:复制从光标位置到开头 y$:复制从光标位置到结尾
d:剪贴一行
dd:剪贴两行
ndd:多行
d^:剪贴到开头 d$:剪贴到结尾
:g/^$/d 去掉空行
:g/^\s*$/d 去空格
向左移动25个字符:25+l
:/ 查找 自上而下
:? 查找自下而上
n 下一个
替换:
:s/old/new 把旧的换为新的 单个
:s/old/new/g 整行替换
:%s/old/new/g 整个文件替换
:%s/old/new/gc 整个文件替换并询问
u:替换上次命令
ctrl+r 重做
ctrl+^ 两个切换
打开多个文件
vim a.txt b.txt c.txt
:args 可选
:next
:prev
:last
vim diff a.txt b.txt
ctrl+w+w 跳到第二个文件
:wqa
使用vimtutor工具联系vim使用。
vimtutor工具使用方法:
vimtutor zh
如果出现乱马,使用下面命令解决(只能执行一次)
cd /usr/share/vim/vim70/tutor
mv tutor.zh.euc tutor.zh.euc.bak
iconv -f gb2312 -t utf-8 tutor.zh.euc.bak tutor.zh.euc
vimtutor zh
locate :空间换时间
updatedb
locate passwd
find [路径] [参数] [表达式]
find /usr/share/doc -name filename
-user:根据文件拥有者寻找文件
-group:根据文件所属组寻找文件
-name:根据文件名寻找文件
-perm:根据文件权限寻找
-size:根据文件大小寻找
-type:根据文件类型寻找文件,参数对应c b l f d
find 的表达式使用通配符时需要使用“”圈界
find 目录 条件 条件
[root@localhost ~]# find / -name "pass*"
当前目录:.
find . -name "*ss*"
find . -type f(文件)
find . -type d(目录)
[root@localhost ~]# find . -nouser(文件无属主)
[root@localhost ~]# find . -nogroup(文件无属组)
[root@localhost ~]# find /home/ -user/group user1
-exec
[root@localhost ~]# find . -nouser -exec rm {} \;
{}代表文件和目录
\转义字符
-ok
find . -nogroup -ok rm -rf {} \;有提示删除
[root@localhost ~]# stat a
File: “a”
Size: 0 Blocks: 0 IO Block: 4096 一般空文件
Device: 803h/2051d Inode: 261796 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2011-04-02 14:23:25.000000000 +0800(创建时间:-atime)
Modify: 2011-04-02 14:23:25.000000000 +0800(修改时间:-mtime)
Change: 2011-04-02 14:23:25.000000000 +0800(改变属组属主会变:-ctime)
find /root -mtime -5(5天以内) 5(5天时) +5(5天前)
find . -perm 400:要求权限全部匹配,精确匹配
find . -perm +600(wr):有w,r中任意权限的都会列出,即会列出200 400 600 的权限
find . -perm -600 :要求权限完全满足 权限大于等于600
-name -type
-name -user
-perm -type
-nouser
-nogroup
-mtime
-exec
-ok
-rgex(正则表达式)
obj文件,也就是常说的.o文件
比如下面的指令会产生app.o文件
]$gcc -c app.c
这个是从源代码变成obj文件,这个过程叫编译。
如果app.c里面有main函数,又不依赖其他库文件,那么下面的指令生成执行文件
]$gcc -o app app.o
这就是从.o文件变成执行文件,这个过程叫链接。
linux的关机命令主要有shutdown、halt、reboot、init。shutdown是一种比较安全的关机方法,可以在关机之前通知所有当前登录用户并且阻止用户的登录,可以安全关闭后台的进程。可以通过很多的参数来配置具体的功能。halt:起功能等同于shutdown -h,杀死应用进程,执行sync系统调用,文件系统的些操作完成后会停止内核reboot:起功能类似于halt,只不过关机之后进行重启。init:init进程是所有进程的祖先,其进程号始终为1,可以发信号给init进程来实现关机操作,shutdown就是此种实现方式。 linux的基本指令1.exit:这个指令是退出系统,但不是关机,linux中有很多作业,当你等入后相当于一个作业,当你等出时,作业停止,但其它作业还在进行,只有关机才行。
2.date:显示当前日期
格式化日期:date +%y/%m/%d
3.cal: 显示日历
格式化日历:cal [month] [year]
4.bc: 内置计算器
5.man: 求助了!与info类似
man [command]
6.shutdown: 这就是关机了
shutdown -t sec: shutdown -t 10 10秒关机
shutdown -k message:shutdown -k I WILL SHUTDOWN 不真的关机,只是发个消息I WILL SHUTDOWN
shutdown -c 取消当前已经在执行的关机指令
shutdown -h time:shutdown -h 20:20 停止系统的服务,在20:20关机
shutdown -r time:shutdown -r now 停止系统的服务,然后重新开机
7.reboot :重启,与shutdown -r now
8.目录文件权限
chgrp groupname file/directory: chgrp uranus1 a 变更a文件的组为uranus1
chmod xyz file/directory: chmod 777 a 变更a文件的权限为-rwxrwxrwx
chown user file/directory: chown uranus1 a 变更a文件的拥有者为uranus1
umask 文件或目录时的默认权限
umask:查看
umask xyz:设定
9.cd [相对路径或绝对路径]
10. pwd 显示当前路径
11. mkdir/rmdir 建立目录/删除目录
12. ls 显示文件名称,属性等
ls -a 列出所有文件(连同隐藏文档)
ls -l 详细列出
ls -s 以文件大小排序
13. cp [souce] [object]进行复制
cp -d
cp -r 可以进行目录的复制
cp -s 做成联接文件,与ln功能相同
cp -u 如果源文件新才会复制
14. rm [文件名] 删除文件
rm -i 用户确认
rm -r 循环删除
rm -f 强制删除
15. mv [souce] [object]移动
16. 查看文件内容
cat [文件] 查看文件内容
tac [文件] 最后一行显示
more/less [文件] 显示文件
head/tail -n [文件] 从头或尾开始看文件N行
nl 与cat类似
od 读非ASCii数据文件
17. chattr与Isattr 文件的安全性相关
chattr [+-=] [ASacdistu] [file/directory]
+-=:分别增加,减少,设定属性
A :存取时间atime不能修改
18. 搜索文件
which [文件名] 查看可执行文件的位置
whereis [目录名称]
-a :找二进制文件
-m:说明文件manual路径下的文件
-s:只找source 源文件
-n:没有说明文档文件
locate [目录名称]
find [路径] [参数]
1.时间:
-atime n:n*24小时内存取过的文件全部列出来
-ctime n:n*24小时内改变,新增的文件或目录列出来
-mtime n:n*24小时内修改过的文件列出来
-newer file:把比file还要新的文件列出来
2.使用名字
-gid n:寻找群组ID为N的文件
-group name:寻找群组名称为name的文件
-uid n:寻找拥有者ID为N的文件
-user name:寻找用户名称为name的文件
-name file:寻找文件名为file的文件名称
-type type:寻找文件属性为type的文件,包含b,c,d,p,l,s(接口设备b,端口设备c,目录d,联接文件l)
19. vi基本操作(光标移动的不用多讲)
查找与替换
/word 在光标之后查找一个名为word的字符串
?word 在光标之前查找一个名为word的字符串
n1,n2s/word1/word2/g 在n1行到n2行之间的查找与替换
1,$s/word1/word2/gc 在1到最后一行这间的查找与替换,并在换时要确认。
命令行模式:
w: 保存
w!:若文件只读,刚强制写
q:退出
wq:
w[filename]:将数据放在另一个文件中
r[filename]:读入另一个文件的数据。
set nu:加入行
set nonu:与set nu 相反
n1,n2 w[filename]:从n1到n2的内容保存为filename这个文件。