内存参数

Java命令学习系列(三)——Jmap

人盡茶涼 提交于 2019-12-24 14:16:34
Java命令学习系列(三)——Jmap 2015-05-16 分类: Java 阅读(479) 评论(0) Jmap jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump。在 Java命令学习系列(零)——常见命令及Java Dump介绍 和 Java命令学习系列(二)——Jstack 中分别有关于Java Dump以及线程 Dump的介绍。 这篇文章主要介绍Java的堆Dump以及jamp命令 什么是堆Dump 堆Dump是反应Java堆使用情况的内存镜像,其中主要包括 系统信息 、 虚拟机属性 、 完整的线程Dump 、 所有类和对象的状态 等。 一般,在内存不足、GC异常等情况下,我们就会怀疑有 内存泄露 。这个时候我们就可以制作堆Dump来查看具体情况。分析原因。 基础知识 Java虚拟机的内存组成以及堆内存介绍 Java GC工作原理 常见内存错误: outOfMemoryError 年老代内存不足。 outOfMemoryError:PermGen Space 永久代内存不足。 outOfMemoryError:GC overhead limit exceed 垃圾回收时间占用系统运行时间的98%或以上。 jmap 用法摘要 Usage: jmap [option

linux 命令大全

本小妞迷上赌 提交于 2019-12-24 09:24:23
Linux系统命令操作语法格式 命令 空格 参数 空格 【文件或路径】需要处理的内容 rm -rf /tmp/* ls -la /home 结婚 -没车没房 女的就行 结婚 -有车有房 白富美 1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的 2.参数 > 同一个命令,跟上不同的参数执行不同的功能 执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要! linux命令,参数之间,普遍应该用一个或多个空格分割! 创建一个目录 /oldboy windows下: 鼠标右击 > 新建文件夹 Linux下: make directory > mk dir > mkdir------------------------------- mkdir /oldboy------------------------------- cd / mkdir oldboy#递归创建a/b c/dmkdir -p a/b c/d#递归创建test/a,b,c,d四个目录mkdir -p test/{a,b,c,d}#递归创建文件夹a/b/c/d/emkdir -p a/b/c/d/e 查看目录 /oldboy #显示/oldboy下的内容 ls /oldboy 改变当前的目录/位置 cd /home cd ~ cd - 换来换去的,迷路了怎么办?我到底在哪个目录?

Linux相关TCP参数优化: proc/sys/net/ipv4/ 提高web质量

这一生的挚爱 提交于 2019-12-24 02:28:52
tcp_wmem(3个INTEGER变量): min, default, max min:为TCP socket预留用于发送缓冲的内存最小值。每个tcp socket都可以在建议以后都可以使用它。默认值为4096(4K)。 default:为TCP socket预留用于发送缓冲的内存数量,默认情况下该值会影响其它协议使用的net.core.wmem_default 值,一般要低于net.core.wmem_default的值。默认值为16384(16K)。 max: 用于TCP socket发送缓冲的内存最大值。该值不会影响net.core.wmem_max,”静态”选择参数SO_SNDBUF则不受该值影响。默认值为 131072(128K)。(对于服务器而言,增加这个参数的值对于发送数据很有帮助,在我的网络环境中,修改为了51200 131072 204800) tcp_rmem (3个INTEGER变量): min, default, max min:为TCP socket预留用于接收缓冲的内存数量,即使在内存出现紧张情况下tcp socket都至少会有这么多数量的内存用于接收缓冲,默认值为8K。 default:为TCP socket预留用于接收缓冲的内存数量,默认情况下该值影响其它协议使用的 net.core.wmem_default 值。该值决定了在tcp_adv_win

高并发课程笔记

放肆的年华 提交于 2019-12-23 12:10:05
高并发课程笔记 (一) 第一课 synchronized 线程重入 (一)第二课 是否可以在同步方法运行期间,插入一个非同步方法? 脏读问题 一个同步方法可以调用另一个同步方法吗? (一)第三课 一个同步方法可以调用另一个同步方法吗? synchronized 方法异常 volatile 关键字 volatile 的问题 (一)第四课 原子类 synchronized 优化 避免将锁定对象的引用变成另外的对象 不要用字符串常量作为锁定对象 (一)第五六课 (二) 第一二三课 ReenTrantLock ReenTrantLock与synchronized的区别 trylock() lockInterruptibly 公平锁 生产者消费者模式 (二)第四课 线程局部变量 (三)Java的并发容器类 (三)第一二课 线程的单例模式 创建线程安全的单例模式, 高并发容器开头 火车站卖票第一版 火车站卖票第二版(Vector容器) 火车站卖票第三版(LinkedList +synchronized) 火车站卖票第四版(并发容器 ConcurrentLinkedQueue) (三)第三四课 并发容器 Concurrent 类的Map 写时复制容器 ConcurrentLinkedQueue LinkedBlockingQueue ArrayBlockingQueue DelayQueue

BUFFER CACHE和SHARED POOL原理

廉价感情. 提交于 2019-12-21 22:19:25
http://blog.csdn.net/wanghai__/article/details/4881492 Buffer Cache LRU与Dirty List 在Buffer Cache中, Oracle 通过几个链表进行内存管理。 LRU list用于维护内存中的Buffer,按照LRU 算法 进行管理。 数据库 初始化时,所有的Buffer都被Hash到LRU list上管理。当需要从数据文件上读取数据时,首先要在LRU List上寻找Free的Buffer,然后读取数据到Buffer Cache中;当数据被修改之后,状态变为Dirty,就可以被移动至Dirty List,Dirty List上的都是候选的可以被DBWR写出到数据文件的Buffer,一个Buffer要么在LRU List上,要么在Dirty List上存在,不能同时存在于多个list。 Buffer Cache 的原理及使用 : ①当一个Server进程需要读数据到Buffer Cache中时,首先必须判断该数据在Buffer中是否存在,如果存在且可用,则获取该数据,根据LRU算法在LRU List上移动该Block;如果Buffer中不存在数据,则需要从数据文件上读取。 ②在读取数据之前,Server进程需要扫描LRU List寻找Free的Buffer

C++内存对齐的理解

痞子三分冷 提交于 2019-12-21 11:02:51
程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也带来了一些麻烦,我们也屏蔽掉变量默认的对齐方式,自己可以设定变量的对齐方式。 编译器中提供了 #pragma pack(n)来设定变量以n 字节对齐 方式。 n字节对齐就是说变量存放的起始地址的 偏移量 有两种情况: 第一、如果n大于等于该变量所占用的字节数,那么偏移量必须满足默认的对齐方式, 第二、如果n小于该变量的类型所占用的字节数,那么偏移量为n的倍数,不用满足默认的对齐方式。 结构的总大小也有个约束条件,分下面两种情况: 如果n大于所有 成员变量 类型所占用的字节数,那么 结构的总大小必须为占用空间最大的变量占用的空间数的倍数 ; 否则必须为n的倍数。 重要的规则 1,复杂类型中各个成员按照它们被声明的顺序在 内存中顺序存 储,第一个成员的地址和整个类型的地址相同; 2, 每个成员分别对齐,即每个成员按 自己的方式对齐 ,并最小化长 规则就 是每个成员 按其类型的 对齐参数(通常是这个类型的大小) 和 指定对齐参数 中 较小的一个对齐(对齐指的是数据类型在内存中的起始的N倍的跨度) ; (指 复杂类型中成员类型 中自己的对齐方式,并不是结构体等整体的对齐方式) 3, 结构 、 联合 或者 类的数据成员 ,第一个放在偏移为0的地方;以后每个数据成员的对齐,按照#pragma

JVM调优的几种策略

早过忘川 提交于 2019-12-21 06:17:33
一、JVM内存模型及垃圾收集算法 1. 根据Java虚拟机规范, JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配, Perm不属于堆内存,有虚拟机直接分配 ,但可以通过 -XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(New): 年轻代用来存放JVM刚分配的Java对象 年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代 永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。 New又分为几个部分: Eden: Eden用来存放JVM刚分配的对象 Survivor1 Survivro2: 两个Survivor空间一样大 ,当Eden中的对象经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然, Survivor只是增加了对象在年轻代中的逗留时间 ,增加了被垃圾回收的可能性。 2.垃圾回收算法 垃圾回收算法可以分为三类,都基于标记-清除(复制)算法:   Serial算法(单线程) 并行算法

阶段1 语言基础+高级_1-2 -面向对象和封装_10用对象类型作为方法的参数

女生的网名这么多〃 提交于 2019-12-21 02:09:06
用自己自定义的类Phone来作为方法的参数,新建demo04PhoneParam.java 使用自定义的类作为方法的参数。这里没有提示报错就是可以用的 验证输出的结果 内存中发生变化 结合这段代码。内存当中到底发生了什么事情 成员方法先不放,因为暂时还没有用到 接下来要调用方法。、不一样的地方红线标出来了。这是和刚才的区别所在。 metod调用就要进栈 one的地址赋值给了method的参数param 来源: https://www.cnblogs.com/wangjunwei/p/11195370.html

mysql核心参数优化

白昼怎懂夜的黑 提交于 2019-12-20 23:52:20
MySQL数据库服务器配置 CPU的优化 内存的优化 IO的优化 连接的优化 数据一致性的优化 1.描述 back_log 参数的作用? back_log = 500 要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求, 这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。 不需要配置 =50 + (max_connections / 5),===50+ 3000/5=650 Default Value -1 (autosized) back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接, 你需要增 加它,换句话说,这值对到来的TCP/IP连接的侦听队列的大小。 你的操作系统在这个队列大小上有它自己的限制。试图设定 back_log高于你的操作系统的限制将是无效的。 当你观察你的主机进程列表,发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时,就要加大 back_log 的值了。默认数值是50,我把它改为500。 作用 :MySQL每处理一个连接请求的时候都会对应的创建一个新线程与之对应

Linux笔记第二课

会有一股神秘感。 提交于 2019-12-20 01:03:31
用户与linux系统交互 Shell(也称为终端或壳)充当的是人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端,它就会调用相应的程序服务去完成某些工作。现在包括红帽系统在内的许多主流Linux系统默认使用的终端是Bash(Bourne-Again SHell)解释器。 通过上下方向键来调取过往执行过的Linux命令; 命令或参数仅需输入前几位就可以用Tab键补全; 具有强大的批处理脚本; 具有实用的环境变量功能。 一、linux命令格式 命令名称 [命令参数] [命令对象] 空格键 向下翻一页 PaGe down 向下翻一页 PaGe up 向上翻一页 home 直接前往首页 end 直接前往尾页 / 从上至下搜索某个关键词,如“/linux” ? 从下至上搜索某个关键词,如“?linux” n 定位到下一个搜索到的关键词 N 定位到上一个搜索到的关键词 q 退出帮助文档 二、常见命令 1、echo命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。 把指定字符串“Linuxprobe.com”输出到终端屏幕的命令为: [root@linuxprobe ~]# echo Linuxprobe.com [root@linuxprobe ~]# echo $SHELL /bin/bash 2、date命令