MMC还可以这样测试!

Linux下mmc_test测试工具使用

很多朋友也都有疑问,如何在Linux下,测试emmc/sd模块呢? 当然,mmc core提供了mmc_test.c来作为mmc driver的测试文件。

如何使用mmc_test.c测试文件测试mmc 驱动呢?

1、将mmc_test.c编译到内核

默认情况下,mmc_test.c是独立的文件,并没有编译到内核中,需要我们到menuconfig中手动打开。

打开的配置有:CONFIG_MMC_TESTCONFIG_MMC_DEBUGCONFIG_DEBUG_FS三个配置。

注意CONFIG_MMC_TEST,该选项可以选择M*,分别对应为:编译成模块或者直接编译到内核

这里我们选择*

2、mmc_test绑定

默认情况下,我们一般都已经加载了mmc driver,那么要想使用mmc_test工具测试,需要将mmc设备绑定到该mmc_test驱动上。

2.1、查看驱动编号

通过下面命令,查询对应的mmc编号,如下:mmc0:0001,忽略掉\

ls /sys/bus/mmc/drivers/mmcblk/mmc0\:0001/

2.2、解绑mmc原驱动

echo mmc0:0001 >  /sys/bus/mmc/drivers/mmcblk/unbind

2.3、绑定mmc_test驱动

echo mmc0:0001 > /sys/bus/mmc/drivers/mmc_test/bind

2.4、debugfs挂载

mount -t debugfs none /sys/kernel/debug

2.5、查看测试列表

cd /sys/kernel/debug/mmc0/mmc0\:0001/
cat testlist 
0:      Run all tests
1:      Basic write (no data verification)
2:      Basic read (no data verification)
3:      Basic write (with data verification)
4:      Basic read (with data verification)
5:      Multi-block write
6:      Multi-block read
7:      Power of two block writes
8:      Power of two block reads
9:      Weird sized block writes
10:     Weird sized block reads
11:     Badly aligned write
12:     Badly aligned read
13:     Badly aligned multi-block write
14:     Badly aligned multi-block read
15:     Correct xfer_size at write (start failure)
16:     Correct xfer_size at read (start failure)
17:     Correct xfer_size at write (midway failure)
18:     Correct xfer_size at read (midway failure)
19:     Highmem write
20:     Highmem read
21:     Multi-block highmem write
22:     Multi-block highmem read
23:     Best-case read performance
24:     Best-case write performance
25:     Best-case read performance into scattered pages
26:     Best-case write performance from scattered pages
27:     Single read performance by transfer size
28:     Single write performance by transfer size
29:     Single trim performance by transfer size
30:     Consecutive read performance by transfer size
31:     Consecutive write performance by transfer size
32:     Consecutive trim performance by transfer size
33:     Random read performance by transfer size
34:     Random write performance by transfer size
35:     Large sequential read into scattered pages
36:     Large sequential write from scattered pages
37:     Write performance with blocking req 4k to 4MB
38:     Write performance with non-blocking req 4k to 4MB
39:     Read performance with blocking req 4k to 4MB
40:     Read performance with non-blocking req 4k to 4MB
41:     Write performance blocking req 1 to 512 sg elems
42:     Write performance non-blocking req 1 to 512 sg elems
43:     Read performance blocking req 1 to 512 sg elems
44:     Read performance non-blocking req 1 to 512 sg elems
45:     Reset test
46:     Commands during read - no Set Block Count (CMD23)
47:     Commands during write - no Set Block Count (CMD23)
48:     Commands during read - use Set Block Count (CMD23)
49:     Commands during write - use Set Block Count (CMD23)
50:     Commands during non-blocking read - use Set Block Count (CMD23)
51:     Commands during non-blocking write - use Set Block Count (CMD23)

2.6、测试指定命令

echo number > test

number:是上面的测试序号。

如:echo 1 > test

mmc0: Starting tests of card mmc0:0001...
mmc0: Test case 1. Basic write (no data verification)...
mmc0: Result: OK

嵌入式艺术

本文转载于网络 如有侵权请联系删除

相关文章

  • jQuery数组反转「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。代码很短,不过实现的时候需要原始数组的配合。并且,对数字索引数组支持还不错,索引不连续的一样支持(对于非连续索引,只取最大的索引加1作为数组的长度,不影响数组元素反转)。 <scriptsrc="./jQuery-1.7.1/jQuery-1.7.1.js"type="text/javascript"></script> <scripttype="text/javascript"> $(function(){ vararr1=[23,45,77,2,5]; //数组反转。 varlen1=arr1.length; varnewarr1=$.map(arr1,function(v,i){//map方法匿名函数传的值v是值、i是索引。 returnarr1[len1-1-i]; }); alert(newarr1); vararr2=[]; arr2[1]=29;

  • 看过来,看如何免费给你的视频加上字幕!

    1.前言自己在制作视频的过程中,难免需要给自己的视频加入字幕,从而方便观众理解。这篇文章就是手把手教你如何免费给自己的视频加上字幕。2.前期准备开始制作之前,需要做一些准备工作,下边这是就是给视频免费制作字幕的必要准备:视频素材,这是先决要素,没视频咋做。音频素材,通过视频提取出来的音频素材,这是为了下边做字幕做准备。网易见外,AI智能语音转写听翻平台,通过建立一个网易账号即可登录。ArcTime,简单、强大、高效的跨平台字幕制作软件。3.字幕制作好了,有了上边的准备工作之后,接下来就可以进行视频字幕的制作了。3.1视频转音频首先呢,我们先把自己录制的视频转成音频,供下边的步骤使用。视频转音频的方法很多,比如使用PR等专业软件进行提取,此处介绍一个在线提取的网站蜜蜂剪辑,如下图所示。只要把我们要转换的视频拖进来,然后就可以进行提取了,此外还有客户端进行下载,对于比较小的视频完全够用了。如果你的视频资源较大或者出于一些其他原因,那还是推荐你使用PR等专业软件进行提取。3.2音频转字幕好了,有了上一步中的音频之后,我们就可以进行转字幕工作了。首先注册并登录网易见外工作台,登陆后见面如下图所

  • 2021年十大最好用的FTP客户端软件,有些功能真是牛逼!(附网盘下载)

    现在网络发展巨快,互联网相关热门技术的兴起,使得我们上网变得十分简单,因为我们只需要输入一个网址,就可以访问到我们喜欢的网页,也可以使用用我们比较熟悉的应用程序、下载我们想要的资料等。表面看来非常简单,但是中间夹杂的技术却很多,任何网站或在线服务的每一个元素都涉及到很多技术。科技公司每年都会投入大量的成本去研发安全登录相关的软件,其实我们做技术的都知道远程登录最常见的就是FTP,就算你不是做技术的,只要你在互联网上下载过东西,那么其中的技术多多少少是从FTP演变而来,万变不离其宗!那么什么是FTP技术呢?在看本文的大都是网工、运维、测试、甚至售前,还有好多刚入网络技术行业的学生、小白,相信你们都知道FTP。FTP是一种文件传输协议,是服务器用来共享文件的一种文件共享技术。许多内容共享服务器使用FTP技术来共享文件。FTP最初是作为服务器的命令行界面构建的,但现在它也可以在Windows和Mac等桌面计算机上使用。使用Windows和Mac上的FTP客户端,只需点击几下,就可以从任何FTP服务器下载文件。在这篇文章中,瑞哥将列出最好的FTP客户端软件的PC-Windows和Mac,您可以

  • JS做类型检测到底有几种方法?看完本文就知道了!

    JS有很多数据类型,对于不同数据类型的识别和相互转换也是面试中的一个常考点,本文主要讲的就是类型转换和类型检测。数据类型JS中的数据类型主要分为两大类:原始类型(值类型)和引用类型。常见的数据类型如下图所示:原始数据类型存在栈中,引用类型在栈中存的是一个引用地址,这个地址指向的是堆中的一个数据对象。需要注意的是null在这里我们算在原始类型里面,但是你用typeof的时候会发现他是object,原因是就算他是一个对象,那他应该在栈中存一个引用地址,但是他是一个空对象,所以这个地址为空,也就是不对应堆中的任意一个数据,他在堆中没有数据,只存在于栈中,所以这里算为了原始类型。引用类型其实主要就是Object,Array和Function这些其实也都是Object派生出来的。关于这两种类型在内存中的更详细的知识可以看这篇文章。下面我们来看看这两种类型的区别:原始类型原始类型的值无法更改,要更改只能重新赋值。像下面这样尝试去修改是不行的,但是整个重新赋值可以。 原始类型的比较就是比较值,值相等,他们就相等 引用类型引用类型的值是可以修改的,注意这个时候我们虽然修改了a里面的属性,但是a在栈上

  • 以练代学设计模式(1)命令、单例、备忘录,与简单工厂

    我这人是很提倡以练代学的,光说不练假把式,看我QQ昵称,justdoit。 书上得来终觉浅,我有加设计模式的群,里面大佬不少,但是好像都是书上的大佬,我野不好反驳他们。有人愿意问我,我就两个字:实战。最近接手了一个小项目,运动会的管理系统,正好我在学习设计模式,就接过来了。项目需求是这样的:任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 运动项目可以包括50、100、200,400,1500米,跳高,跳远,标枪,铅球铁饼等。 一个选手信息: 姓名、选手编号、学校编号、性别、年龄。 一个运动项目信息: 项目名称、项目编号、适用性别、成绩排名规则。 一个选手参加运动项目成绩信息: 选手编号、项目编号、选手成绩、排名、得分。 运动会选手列表:数组名、总规模、当前选手个数 运动会运动项目列表:数组名、总规模、当前运动项目个数 运动会

  • Hope 是我学习Springboot,SpringCloud的笔记,欢迎star!-低调小熊猫的技术小黑屋

    Hope2.0每个demo添加了md文件,更专业,更详细,我的学习笔记,欢迎star!https://github.com/java-aodeng/hop目录SpringBoot框架篇SpringBoot(1):公共配置代码|文章SpringBoot(2):generator代码|文章SpringBoot(3):docker部署项目代码|文章SpringBoot(4):单一,base64文件上传代码|文章SpringBoot(5):通用mapper,分页插件代码|文章SpringBoot(6):redis缓存数据,session代码|文章SpringBoot(7):定时任务代码|文章SpringBoot(8):格式化日期代码|文章SpringBoot(9):全局异常处理代码|文章SpringBoot(10):JavaMailSender邮件服务代码|文章SpringBoot(11):CommandLineRunner-初始化资源代码|文章SpringBoot(12):redis保存session-shiro登录认证代码|文章SpringBoot(13):MockMVC-web单元测试代

  • 028 在自动化仓储中找找“中国古拳法”

    中国古拳法是一种以中国传统武学为基础,并使用超能力辅助、强化的武术流派。手法为打穴为主,并以蹦、弹、抓、挑、钻、擂、拉、劈、抄、砍、截、摆、封、捅、砸等为辅;腿法有踢、碰、蹬、踹、踩、挂、跪、截、跛等。以上是从百度中看到的关于中国古拳法的解释。相信大部分的男孩子都有一个武侠梦,喜欢武侠世界里的刀光剑影,更钟情于大侠身上的满身功夫。而身为智能仓储物流自动化行业的从业者来说,大家更多的时间都是在工程项目的设计和施工上,看来是无缘做一名侠客和剑客了。不过我们可以从中国古拳法的常见手法里看看有哪些动作也类似的出现在仓储物流自动化设备或者系统里。抓论其功夫里的抓,估计大家对“九阴白骨爪”不陌生,九阴白骨爪主要的动作要领就是抓。而在我们仓储物流自动化领域里,抓的动作也可一点都不逊色---那就是自动工业机械手。机械手从不疲倦,指哪抓哪,抓取力度也不比九阴白骨抓弱,在仓储物流自动化领域里最常见的就是利用接收来拆码垛或者定点装箱和拆箱。拉拉的动作大家都很容易理解,比如拔河里的动作就是往后拉。在功夫世界里,印象最深的应该是太极推手里的一些要领,比如借力使力,对方一个猛拳过来后,太极拳没有直接硬碰硬,而是将

  • CouchDB入门

    配置yum源在CentOS8上默认的yum源是没有couchdb包的,因此需要添加couchdb的yum源。创建一个新文件/etc/yum.repos.d/bintray-apache-couchdb-rpm.repo,内容如下:[bintray--apache-couchdb-rpm] name=bintray--apache-couchdb-rpm baseurl=http://apache.bintray.com/couchdb-rpm/el$releasever/$basearch/ gpgcheck=0 repo_gpgcheck=0 enabled=1复制安装CouchDB$yuminstall-yepel-release $yuminstall-ycouchdb复制默认couchdb的安装路径为:/opt/couchdb运行CouchDB$sudo-i-ucouchdb/opt/couchdb/bin/couchdb复制启动后,可以通过浏览器访问Fauxton页面http://localhost:5984/_utils/index.html来验证安装是否成功,也可以通过此

  • python metaclass ..

    目录要点回顾第一:everythingisobject第二:metaclass可以定制类的创建第三:关于metaclass的两个细节我遇到的问题重载通过MetaMixin中注入的方法防止属性被意外覆盖解决重复使用metaclassmetaclassnewinitreferences正文关于Python2.x中metaclass这一黑科技,我原以为我是懂的,只有当被打脸的时候,我才认识到自己tooyoungtoosimplesometimesnative。为什么之前我认为自己懂了呢,因为我阅读过stackoverflow上的《what-is-a-metaclass-in-python》这一神作(注意,本文中专指e-satis的回答),在伯乐在线上也有不错的翻译《深刻理解Python中的元类(metaclass)》。而且在实际项目中也使用过metaclass,比如creating-a-singleton-in-python一文中提到的用metaclass创建单例,比如用metaclass实现mixin效果,当然,正是后面这个使用案列让我重新认识metaclass。本文地址:http://w

  • python 收益与风险图表集成

    版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/weixin_44580977/article/details/102323001呈现 1.盈亏状态的买卖区间及标注上买卖信号点 2.资金曲线及资金最大回撤点 3.基准收益曲线及使用策略后的收益曲线 例程代码importpandas_datareader.dataasweb importpandasaspd importnumpyasnp importdatetime importmatplotlib.pyplotasplt importmatplotlib.gridspecasgridspec#分割子图 plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False#用来正常显示负号 #股票数据获取及处理接口 defGetStockDatApi(s

  • keepalived实现Tomcat服务双机热备

    1.规划1.1服务器环境规划负载服务器master及WEB服务器1真实IP:10.10.195.53负载服务器backup及WEB服务器2真实IP:10.10.195.190负载服务器虚拟ip:10.10.195.2121.2软件环境规划操作系统:RedHatEnterpriseLinuxServerrelease5.6(Tikanga)keepalived:1.9.19Tomcat:92.负载服务器配置这里只叙述如何安装配置keepalived,至于java以及tomcat的安装及配置,这里不赘述。2.1安装keepalived[~]tar-zxvfkeepalived-1.2.19.tar.gz[~]cdkeepalived-1.2.19[keepalived-1.2.19]./configure--prefix=/usr/local/keepalived--disable-fwmark#(如果直接输入./configure有可能报错:configure:error:NoSO_MARKdeclarationinheaders)[keepalived-1.2.19]make[keep

  • Linux巩固记录(1) J2EE开发环境搭建及网络配置

    由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上去看下进程,复制粘贴删除等基本操作,很多东西久了不用就忘了,所有写个demo巩固下曾经的linux知识后续会有hadoop等主流的大数据相关环境的搭建及使用---------------------------------------------------------------------------------------------------------------------------------------------------------这次讲最基本的J2EE环境搭建 VMware12下 CentOS-7-x86_64-Everything1.虚拟机配置为静态地址且在同一网段(尽量不要用dhcp,如果ip变了会影响到诸如hadoop节点间网络不通)  a配置为静态地址且指定网段和主机相同  编辑》》虚拟网络编辑器》》VMnet8》》  选中某台虚拟机后,右键》》设置》》网

  • UE4 LightRendering

    最近把HairWorks整合到了UE44.20,整合的过程中发现了一些没法直接merge的代码,主要集中在LightRendering.cpp和DeferredLightingPixelShader.usf中.所以顺便简单读了一下代码,把其中的一些关键字概念整理出来方便查阅理解.UniformBufferStruct UE4使用了一些宏来辅助定义UniformBuffer中的结构体,在Shader中是可以打到对应的定义的.SimpleLight不如叫ParticleLight,粒子系统中发射的简单点光源.因为数量很多,所以算法做了简化,没有阴影之类的效果LightFunctionLightFunction在我看来更像是一个可以用材质节点控制的ShadowMask,改变光照区域的强度,不能叠加颜色.StencilingGeometry有三种:Sphere:点光源,面积光VectorSphere:好像是做BoundSphere的?Cone:聚光灯DBT(DepthBoundTest)用来剔除挡住的光源的RadialLight点光源或聚光灯都是RadialLight,方向光就不是,做选择

  • 深入浅出| java中的clone方法

    我们还年轻,但这不是你浪费青春的理由克隆和复制clone,有人称之为克隆,有人称之为复制,其实都是同一个东西 本文称之为"克隆",毕竟人家方法名叫"clone"为什要用克隆想一想,为什么需要克隆?为什么不重新new一个?道理很简单,目的是想要两个相同的对象,重新new一个还得自己重新赋值,太麻烦如何克隆一个对象? 如果是个初学者,可能会这么写publicclassStudent{ Stringname; publicStudent(Stringname){ super(); this.name=name; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicstaticvoidmain(String[]args){ Studentstu1=newStudent("小明"); Studentstu2=stu1; } }复制这确实是做了克隆,但只是克隆了引用变量 来验证一下System.ou

  • 不在激情时刻给你“使绊子”,Amimon推无线VR技术

    目前,VR头显被大家吐槽的比较多的地方,就是那个“剪不得理还乱”的用于传输电力和数据的连接线。虽然,很多厂商都在积极开发无线头显,也发布了一些产品,但是无线头显仍存在分辨率不高、数据延迟等问题。而近日,以色列半导体公司Amimon在旧金山举办的VRX展会上,展示的一项可实现无线VR头显的全新技术,将有望解决以上问题。该技术采用的是Amimon获得过专利的传输系统,可为无线VR头显提供高品质的传输和零延迟的视频显示效果。该传输系统使用5GHz频段,能在任何场景中为用户提供高质量视频,包括基于不同地理位置的多用户场景。此外,该系统采用嵌入式芯片,可以以90fps的速度实现2K的VR分辨率。图像在1080p格式时,传输速度可达120fps(每秒传输帧数),不输HTCVive、OculusRift现在的有线头显。Amimon开发的这种无延迟无线VR头显技术,可以与很多现有的VR系统兼容。目前,Amimon已经开始向医疗、电影和商业无人机等领域提供高清无线视频技术。此外,该技术还被用在一些工业用途上。Amimon市场营销副总裁UriKanonich表示:“很高兴可以向用户展示这项我们一直在努力开

  • 自动驾驶汽车到底涉及了哪些技术?

    作者:陈光 上汽集团|高精度地图&环境建模工程师 量子位已获授权编辑发布Google从2009年开始做自动驾驶,到现在已有8个年头。8个年头的技术积累还无法将自动驾驶技术量产落地,可见自动驾驶技术并不简单。自动驾驶是一个庞大而且复杂的工程,涉及的技术很多,大部分答主仅从软件方面进行了介绍,而且太过细致。我从硬件和软件两方面谈一谈自动驾驶汽车所涉及的技术。一.硬件离开硬件谈自动驾驶都是耍流氓。先看个图,下图基本包含了自动驾驶研究所需要的各种硬件。然而…这么多传感器并不一定会同时出现在一辆车上。某种传感器存在与否,取决于这辆车需要完成什么样的任务。如果只需要完成高速公路的自动驾驶,类似Tesla的AutoPilot功能,那根本不需要使用到激光传感器;如果你需要完成城区路段的自动驾驶,没有激光传感器,仅靠视觉是很困难的。自动驾驶系统工程师要以任务为导向,进行硬件的选择和成本控制。1.汽车既然要做自动驾驶,汽车当然是必不可少的东西。从我司做自动驾驶的经验来看,做开发时,能不选纯汽油车就别选。一方面是整个自动驾驶系统所消耗的电量巨大,混动和纯电动在这方面具有明显优势。另一方面是是发动机的

  • 红帽子RHCS套件安装与配置(一)

    RHCS提供的三个核心功能  高可用集群是RHCS的核心功能。当应用程序出现故障,或者系统硬件、网络出现故障时,应用可以通过RHCS提供的高可用性服务管理组件自动、快速从一个节点切换到另一个节点,节点故障转移功能对客户端来说是透明的,从而保证应用持续、不间断的对外提供服务,这就是RHCS高可用集群实现的功能。  RHCS通过LVS(LinuxVirtualServer)来提供负载均衡集群,而LVS是一个开源的、功能强大的基于IP的负载均衡技术,LVS由负载调度器和服务访问节点组成,通过LVS的负载调度功能,可以将客户端请求平均的分配到各个服务节点,同时,还可以定义多种负载分配策略,当一个请求进来时,集群系统根据调度算法来判断应该将请求分配到哪个服务节点,然后,由分配到的节点响应客户端请求,同时,LVS还提供了服务节点故障转移功能,也就是当某个服务节点不能提供服务时,LVS会自动屏蔽这个故障节点,接着将失败节点从集群中剔除,同时将新来此节点的请求平滑的转移到其它正常节点上来;而当此故障节点恢复正常后,LVS又会自动将此节点加入到集群中去。而这一系列切换动作,对用户来说,都是透明的,通过故

  • 服务器托管双线技术方案怎么写_自己搭建内网穿透服务器全端口

    大家好,又见面了,我是你们的朋友全栈君。 多线路接入技术就是在互联网数据中心(IDC)通过特殊的技术手段把不同的网络接入商(ISP)服务接入到一台服务器上或服务器集群,使服务器所提供的网络服务访问用户能尽可能以同一个ISP或互访速度较快的ISP连接来进行访问,从而解决或者减轻跨ISP用户访问网站的缓慢延迟(南北网络瓶颈)问题。多线路接入是一个技术概念可以有多种具体实现方式,由于大多用户都是网通与电信,为了见简单起见,我们只讨论双线接入技术。目前国内的ISP提供商分别提出了“双IP双线路”、“单IP双线路”、“CDN多线路”和“BGP单IP双线路”等双线路实现方法,下面来对以上提出的双线路接入实现方式进行具体说明:一、双IP双线路实现方式双IP双线路实现方式是指在一台服务器上安装两块网卡,分别接入电信网线与网通网线并设置一个网通IP与一个电信IP,这样一台服务器上就有了两个IP地址,需要在服务器上添加网通或电信的路由表来实现网通用户与电信用户分别从不同的线路访问。双IP双线路具有常用的两种使用方式:1.管理员在网站设置两个IP地址不同的链接,网通用户点击网通IP访问服务器,电信用户点击电

  • PowerShell设置环境变量

    查看环境变量: PSC:\Users\Administrator>echo$env:apollo{} 设置环境变量: PSC:\Users\Administrator>$env:apollo="TEST_VALUE" 再次查看: PSC:\Users\Administrator>echo$env:apolloTEST_VALUE 影响空间范围:仅在此窗口 影响时间范围:尽在此窗口的运行时间,窗口关闭后,此变量消失,不会修改到我的电脑-->属性-->高级设置里的环境变量. 适合场景:临时修改环境变量 ————————————————版权声明:本文为CSDN博主「Horsdy123」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/Horsdy123/article/details/118093957 欢迎光临:http://shiningrise.cnblogs.com

  • 内存抖动

    一.内存抖动 1.内存抖动:指在短时间内有大量的对象被创建或者被回收的现象。 2.内存抖动产生原因:主要是频繁(很重要)在循环里创建对象(导致大量对象在短时间内被创建,由于新对象是要占用内存空间的而且是频繁,如果一次或者两次在循环里创建对象对内存影响不大,不会造成严重内存抖动这样可以接受也不可避免,频繁的话就很内存抖动很严重),内存抖动的影响是如果抖动很频繁,会导致垃圾回收机制频繁运行(短时间内产生大量对象,需要大量内存,而且还是频繁抖动,就可能会需要回收内存以用于产生对象,垃圾回收机制就自然会频繁运行了)。 3.内存抖动影响:频繁内存抖动会导致垃圾回收频繁运行,造成系统卡顿。   本文出自:http://www.cnblogs.com/linxx,本博客文章除特别声明,全部都是原创或亲身实践过,禁止个人和公司转载本文,谢谢理解!

  • /usr/bin/python与/usr/bin/env python的区别

    Infi-chu: http://www.cnblogs.com/Infi-chu/ /usr/bin/envpython执行时,先查找python解释器的路径,然后执行。/usr/bin/python执行时,直接执行这个路径的python解释器(已将python解释器的路径写死)至于使用方面来说,各有利弊,比如: 1.对于系统中只有一个版本的python时,使用/usr/bin/envpython较好 2.对于系统中有多个版本的python时,使用/usr/bin/python较好

相关推荐

推荐阅读