物理内存

关于查看进程所占用物理内存的问题

匿名 (未验证) 提交于 2019-12-02 23:32:01
关于查看进程所占用物理内存的问题 一般查看进程所占物理内存的方法有: 1) top 其中的RES(其实就是RSS) 和SHR(就是本进程中共享库等占用的总大小,不取平均时)列。 2)ps 其中ps或者新版本android中ps -A显示 其中的RSS 3)pmap 新版本的android支持pmap命令 pmap -x 进程号 其中的 PSS和swap列。 swap是交换到zram或者磁盘的物理内存大小。 需要注意的是: Terms VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存) PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存) 一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS 另外android以前使用 MALLOC_IMPL = dlmalloc 来切换dlmalloc和jemalloc。没有定义MALLOC_IMPL宏时,默认是jemalloc android新版本,例如android O,不能再定义MALLOC_IMPL了,否则lunch时报错。而改用: MALLOC_SVELTE

linux0.11内存管理与分页机制

匿名 (未验证) 提交于 2019-12-02 21:59:42
在linux0.11中对内存的管理是以页为单位的,一个页面是指连续的4K字节物理内存。 通过页目录和页表项可以寻址或管理指定的页面。 在8086CPU中,程序寻址使用的是由段选择符和偏移地址构成的地址,这个地址并不能直接寻址物理内存,因此被称为虚拟地址。 虚拟(逻辑)地址首先通过分段管理机制首先变换成CPU32位线性地址(称作中间地址) 实际函数中操作的地址为当前进程数据段的段内偏移,然后会根据该段的段基址和段内偏移确定一个线性地址 然后利用分页管理机制将此线性地址映射到物理地址。 分页机制会将线性地址分为页目录项、页表项、和页内偏移三部分。利用这三部分确定该线性地址指向的实际物理地址 一个系统中可以同时存在多个页目录表,在linux0.11中只使用了一个页目录表,当前页目录表用寄存器CR3来确定。 页目录(占用一页内存)中每个页目录项(4字节)用来寻址一个页表 页表(占用一页内存)中的每个页表项(4字节)用来寻址一页物理内存页 所以我们可以用一个页目录项和一个页表项确定一个对应的物理内存页。 因为每页为4K字节,所以页目录=页表=4K字节 而页目录和页表中每项占4字节,所以页目录和页表中最多有1024项 所以一个页目录最多寻址:1页目录×1024页表×1024页表项×4K字节页大小 = 4G的内存空间 为了使用分页管理机制 一个32位的线性地址如下图被分为了三个部分

Linux vmstat命令实战详解

匿名 (未验证) 提交于 2019-12-02 21:56:30
2019独角兽企业重金招聘Python工程师标准>>> vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如: 2表示每个两秒采集一次服务器状态,1表示只采集一次。 实际上,在应用过程中,我们会在一段时间内一直监控,不想监控直接结束vmstat就行了,例如: 这表示vmstat每2秒采集数据,一直采集,直到我结束程序,这里采集了5次数据我就结束了程序。 好了,命令介绍完毕,现在开始实战讲解每个参数的意思。 r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙

oracle学习篇:四、内存管理

Deadly 提交于 2019-12-02 21:26:52
4 内存管理 4.1 SGA管理 4.1.1 SGA的组成 buffer cache,shared pool,redo log buffer,large pool,java pool,streams pool select * from v$sgainfo; 4.1.2 SGA与共享内存 SGA的设置在Linux/UNIX上和一个操作系统内核参数有关,这个参数是shmmax。 在Solaris上,该参数由/etc/system文件中shmsys:shminfo_shmmax定义;在linux上,该参数由/proc/sys/kernel/shmmax参数定义。 shmmax内核参数定义的是系统运行的单个共享内存段的最大值,如果该参数设置小于SGA设置,那么SGA仍然可以创建成功,但是会被分配到多个共享内存段。 在windows系统中,由于系统采用多线程服务器(所有oracle进程实际上都是一个进程中的线程),所以不存在共享内存的问题,无需进行特殊设置。 shmmax内核参数定义的是系统运行的单个共享内存段的最大值,如果该参数设置小于SGA设置,那么SGA仍然可以创建成功 查看shmmax值: more /porc/sys/kernel/shmmax 查看操作系统版本: cat /etc/redhat-release 查看操作系统发行版号: uname -r ipcs查看共享内存的分配

Tomcat的jvm配置

匿名 (未验证) 提交于 2019-12-02 20:54:39
Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,JAVA程序启动时JVM会分配一个初始内存和最大内存给程序。当程序需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。 1.Tomcat异常类型 常见的 Java 内存溢出有以下三种: Java .lang.OutOfMemoryError: java heap space 堆溢出 。 解释说明:JVM在启动的时候会自动设置JVM Heap(java堆)的值,JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。其初始空间默认是物理内存的1/64,最大空间不可超过物理内存的1/4(Tomcat默认可以使用的内存为128MB)。JVM提供-Xmn -Xms -Xmx等选项来进行相关设置。 出错场景:在JVM中,如果98%的时间是用于GC,且可用的Heap size不足2%时,将会出现JVM Heap溢出 解决方法:修改JVM Heap的大小。 java.lang.OutOfMemoryError :PermGen space 非堆溢出 解释说明:PermGen space是指内存的永久保存区域。这个区域主要存放Class和Meta信息,Class在被Loader时就会被放入PermGen space。 java

Xms Xmx PermSize MaxPermSize 差异

£可爱£侵袭症+ 提交于 2019-12-02 08:34:57
Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommended that you exit and restart MyEclipse with new virtual machine memory paramters to increase this memory. Failure to do so can result in data loss . The recommended Eclipse memory parameters are: eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX

Xms Xmx PermSize MaxPermSize 区别

巧了我就是萌 提交于 2019-12-02 08:34:43
Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommended that you exit and restart MyEclipse with new virtual machine memory paramters to increase this memory. Failure to do so can result in data loss. The recommended Eclipse memory parameters are: eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX

Eclipse中JVM内存设置

天大地大妈咪最大 提交于 2019-12-02 08:34:21
eclipse.ini内存设置   -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M   这里有几个问题:   1. 各个参数的含义什么?   2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?   3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?   下面我们一一进行回答   1. 各个参数的含义什么?   参数中-vmargs的意思是设置JVM参数,所以后面的其实都是JVM的参数了,我们首先了解一下JVM内存管理的机制,然后再解释每个参数代表的含义。   堆(Heap)和非堆(Non-heap)内存   按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据

你知道操作系统的内容分为几块吗?什么叫做虚拟内存?他和主存的关系如何?内存管理属于操作系统的内容吗?

こ雲淡風輕ζ 提交于 2019-12-02 08:08:31
 操作系统的主要组成部分: 进程和线程的管理,存储管理,设备管理,文件管理 。虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所有使用的页文件的总和。 来源: https://blog.csdn.net/qq_32067151/article/details/102699096

查看Linux磁盘及内存占用情况

时光毁灭记忆、已成空白 提交于 2019-12-02 06:13:50
查看磁盘使用情况: df -k:以KB为单位显示磁盘使用量和占用率 df -m:以Mb为单位显示磁盘使用量和占用率 df –help:查看更多df命令及使用方法 查看内存占用情况: 1.top PID:当前运行进程的ID USER:进程属主 PR:每个进程的优先级别 NInice:反应一个进程“优先级”状态的值,其取值范围是-20至19,一     共40个级别。这个值越小,表示进程”优先级”越高,而值越     大“优先级”越低。一般会把nice值叫做静态优先级 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SHR:进程使用的共享内存 S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示   该进程优先值为负数 %CPU:进程占用CPU的使用率 %MEM:进程使用的物理内存和总内存的百分比 TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。 COMMAND:进程启动命令名称 2.free otal : 总计物理内存的大小。 used : 已使用多大。 free : 可用有多少。 Shared : 多个进程共享的内存总额。 Buffers/cached : 磁盘缓存的大小。 -/+ buffers/cached) : used:已使用多大; free:可用有多少。 注意: (mem)的used/free与(-/+ buffers