内存参数

Glide——缓存分析整理

假如想象 提交于 2019-12-02 11:55:50
文章目录 LruCache 概述 原理 DiskLruCache 概述 Glide缓存概述 资源分类 缓存设计 Glide 缓存源码分析 1、生成key 2、创建缓存对象LruResourceCache 3、获取内存缓存中的图片 4、开启加载图片线程 5、获取磁盘缓存 6、写入磁盘 7、写入内存缓存 写入弱引用缓存 写入LruCache LruCache 概述 LruCache是Android 3.1所提供的一个缓存类,所以在Android中可以直接使用LruCache实现内存缓存。 主要算法原理是把最近使用的对象用强引用(即我们平常使用的对象引用方式)存储在 LinkedHashMap 中。当缓存满时,把最近最少使用的对象从内存中移除,并提供了get和put方法来完成缓存的获取和添加操作。 简单使用 int maxMemory = ( int ) ( Runtime . getRuntime ( ) . totalMemory ( ) / 1024 ) ; int cacheSize = maxMemory / 8 ; mMemoryCache = new LruCache < String , Bitmap > ( cacheSize ) { @Override protected int sizeOf ( String key , Bitmap value ) {

14-1 进程管理与任务计划

无人久伴 提交于 2019-12-02 11:38:46
进程管理与任务计划 系统管理工具 进程的分类: CPU-Bound:CPU密集型,非交互 IO-Bound:IO密集型,交互 Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup pstree命令: pstree display a tree of processes ps: process state ps report a snapshot of the current processes Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中 查看进程ps ps [OPTION]... 支持三种选项: UNIX选项 如-A -e BSD选项 如a GNU选项 如--help 选项:默认显示当前终端中的进程 a 选项包括所有终端中的进程 x 选项包括不链接终端的进程 u 选项显示进程所有者的信息 f 选项显示进程树,相当于 --forest k|--sort 属性 对属性排序,属性前加- 表示倒序 o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem L 显示支持的属性列表 ps常见选项: -C cmdlist 指定命令,多个命令用,分隔 -L 显示线程 -e

为什么要有uboot?

[亡魂溺海] 提交于 2019-12-02 10:36:46
一、为什么要有uboot 1.1、计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调) (2)计算机系统的组成部件非常多,不同的计算机系统组成部件也不同。但是所有的计算机系统运行时需要的主要核心部件都是3个东西: CPU + 外部存储器(Flash/硬盘) + 内部存储器(DDR SDRAM/SDRAM/SRAM) 1.2、PC机的启动过程 (1)部署:典型的PC机的BIOS程序部署在PC机主板上(随主板出厂时已经预制了),操作系统部署在硬盘上,内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:PC上电后先执行BIOS程序(实际上PC的BIOS就是NorFlash),BIOS程序负责初始化DDR内存,负责初始化硬盘,然后从硬盘上将OS镜像读取到DDR中,然后跳转到DDR中去执行OS直到启动(OS启动后BIOS就无用了) 1.3、典型嵌入式linux系统启动过程 (1)典型嵌入式系统的部署:uboot程序部署在Flash(能作为启动设备的Flash)上、OS部署在FLash(嵌入式系统中用Flash代替了硬盘)上、内存在掉电时无作用,CPU在掉电时不工作。 (2)启动过程:嵌入式系统 上电后先执行uboot 、然后uboot负责初始化DDR

C#方法的定义、调用与调试

不羁的心 提交于 2019-12-02 10:32:46
本节内容 1.方法的由来; 2.方法的定义与调用; 3.构造器(一种特殊的方法); 4.方法的重载(Override); 5.如何对方法进行debug; 6.方法的调用与栈* *推荐书目:CLR via C#和C# in Depth, 3rd Edition 1.方法的由来 ①方法(method)的前身是C/C++语言的函数(function) 方法是面向对象范畴的概念,在非面向对象语言中仍然称为函数。 可以使用C/C++语言做对比。 *当函数以成员的身份出现时我们就叫它方法(始于C++) ②永远都是类(或结构体)的成员 C#语言中函数不可能独立于类(或结构体之外)。 只有作为类(或结构体)的成员时才被称为方法。 而在C++中是可以的,称为“全局函数”。 ③是类(结构体)最基本的成员之一 最基本的成员只有两个——字段与方法(成员变量与成员方法),本质还是数据+算法 方法表示类(或结构体)“能做什么事情”。 ④为什么需要方法和函数 目的1:隐藏复杂的结构; 目的2:复用(resue,重用); C++中#include #include “Student.h”//如果是标准类库的话用尖括号,如果是自己定义的则用引号。 2.方法的声明与调用 ①声明方法的语法详解 参见C#语言文档(声明/定义不分家); Parameter全称为”formal parameter”; 形式上的参数,简称

C#方法的定义、调用与调试

随声附和 提交于 2019-12-02 10:30:30
本节内容 1. 方法的由来; 2. 方法的定义与调用; 3. 构造器(一种特殊的方法); 4. 方法的重载( Override ); 5. 如何对方法进行 debug ; 6. 方法的调用与栈 * * 推荐书目: CLR via C# 和 C# in Depth, 3rd Edition 1. 方法的由来 ①方法( method )的前身是 C/C++ 语言的函数( function ) 方法是面向对象范畴的概念,在非面向对象语言中仍然称为函数。 可以使用 C/C++ 语言做对比。 * 当函数以成员的身份出现时我们就叫它方法(始于 C++ ) ②永远都是类(或结构体)的成员 C# 语言中函数不可能独立于类(或结构体之外)。 只有作为类(或结构体)的成员时才被称为方法。 而在 C++ 中是可以的,称为“全局函数”。 ③是类(结构体)最基本的成员之一 最基本的成员只有两个 ——字段与方法(成员变量与成员方法),本质还是数据 + 算法 方法表示类(或结构体) “能做什么事情”。 ④为什么需要方法和函数 目的 1 :隐藏复杂的结构; 目的 2 :复用( resue ,重用); C++ 中 #include<iostream> #include "Student.h"// 如果是标准类库的话用尖括号,如果是自己定义的则用引号。 2. 方法的声明与调用 ①声明方法的语法详解 参见 C#

C语言-memset()

眉间皱痕 提交于 2019-12-02 09:43:06
1. memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值, count:是buffer的长度. 这个函数在socket中多用于清空数组.如:原型是memset(buffer, 0, sizeof(buffer)) Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’; 例:char a[100];memset(a, ‘/0’, sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如: struct sample_struct { char csName[16]; int iSeq; int iType; }; 对于变量: struct sample_strcut stTest; 一般情况下,清空stTest的方法: stTest.csName[0]=’/0’; stTest.iSeq=0; stTest.iType=0; 用memset就非常方便: memset(&stTest,0,sizeof(struct sample_struct)); 如果是数组: struct sample_struct TEST[10]; 则 memset(TEST,0,sizeof

java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用

北城余情 提交于 2019-12-02 08:53:43
基于 Sun HotSpot JVM 这里将介绍几款sun hotspot jvm 自带的监控工具: 请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下 jps(JVM Process Status Tool):JVM机进程状况工具 用来查看基于HotSpot JVM里面所有进程的具体状态, 包括进程ID,进程启动的路径等等。与unix上的ps类似,用来显示本地有权限的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。使用jps时,不需要传递进程号做为参数。 Jps也可以显示远程系统上的JAVA进程,这需要远程服务上开启了jstat服务,以及RMI注及服务,不过常用都是对本对的JAVA进程的查看。 命令格式:jps [ options ] [ hostid ] 常用参数说明: -m 输出传递给main方法的参数,如果是内嵌的JVM则输出为null。 -l 输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。 -v 输出传给JVM的参数。 例如: C:\Users\liu>jps -lmv 4868 -Dexe4j.semaphoreName=d:_program files (x86)_jetbrains_intellij idea 12.1. 7_bin_idea.exe -Dexe4j

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编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据