内存参数

Python基础(九)

霸气de小男生 提交于 2019-11-30 02:34:01
今日主要内容 函数初识 函数定义 函数调用 函数返回值 函数参数 一、函数初识 (一)为什么要用函数 有一个需求,给出一个变量,计算变量的长度,要求不能使用 len() s = "郭老湿今天崩溃了,在后面直叹气" count = 0 for i in s: count += 1 print(count) 我们利用上述一段代码完成了需求,很强666。但是问题来了,现在100个人每个人给你一个变量,让你计算变量的长度,此时只能苦逼的敲代码来计算!!! s = ...... count = 0 for i in s: count += 1 print(count) lst = ...... count = 0 for i in lst: count += 1 print(count) tu = ...... count = 0 for i in tu: count += 1 print(count) ...................... 我们发现一个问题,上述每一段代码有将近99%的内容完全一样,我们完全可以把这段代码提前写出来,等到使用的时候,拿过来用一下,解决了我们重复性的大问题,这就是函数的产生 def my_len(): # 这就是把我的代码封装成一个函数 count = 0 for i in s: count += 1 print(count) s = [1, 2, 3

JVM参数设置大全及JVM调优实战

冷暖自知 提交于 2019-11-30 00:46:25
参数说明: -Xmx3550m:设置JVM最大堆内存为3550M。 -Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。需要注意的是:当这个值被设置的较大(例如>2MB)时将会在很大程度上降低系统的性能。 -Xmn2g:设置年轻代大小为2G。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。 -XX:NewSize=1024m:设置年轻代初始值为1024M。 -XX:MaxNewSize=1024m:设置年轻代最大值为1024M。 -XX:PermSize=256m:设置持久代初始值为256M。 -XX:MaxPermSize=256m:设置持久代最大值为256M。 -XX:NewRatio=4:设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:4。 -XX:SurvivorRatio=4

Linux进程管理

隐身守侯 提交于 2019-11-30 00:20:23
博文结构 什么是程序 工作管理 程序管理 一.什么是程序 1.在 Linux 系统当中: “ 触发任何一个事件时,系统都会将他定义成为一个程序,并且给予这个程序一个 ID ,称为 PID ,同时依据启发这个程序的使用者与相关属性关系,给予这个 PID 一组有效的权限设置。 2.程序与进程 ( process & program ) 执行一个程序或指令 ” 就可以触发一个事件而取得一个 PID 啰!我们说过,系统应该是仅认识 binary file 的,那么当我们要让系统工作的时候,当然就是需要启动一个 binary file ,那个 binary file 就是程序 ( program ) 如上图所示,程序一般是放置在实体磁盘中,然后通过使用者的执行来触发。触发后会载入到内存中成为一个个体,那就是程序。 为了操作系统可管理这个程序,因此程序有给予执行者的权限 / 属性等参数,并包括程序所需要的指令码与数据或文件数据等, 最后再给予一个 PID 。系统就是通过这个 PID 来判断该 process 是否具有权限进行工作的 程序 ( program ) :通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文件的型态存在; 进程 ( process ) :程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,

JVM系列_内存分配与回收策略

自闭症网瘾萝莉.ら 提交于 2019-11-29 21:53:15
一. 概述 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的 规则并不是百分之百固定的,其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟 机中与内存相关的参数的设置。 二. 内存分配解析 对象内存分配图: 1. 对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况 。在实际应用中,内存回收日志一般是打印到文件后通过日志工具进行分析,不过本实验的日志并不多,直接阅读就能看得很清楚。 代码示例1中,尝试分配 3个2MB大小和1个4MB大小的对象 , 在运行时通过 -Xms20M、-Xmx20M、-Xmn10M 这3个参数限制了 Java堆大小为20MB,不可扩展 ,其中 10MB分配给新生代 ,剩下的 10MB分配给老年代 。 -XX:SurvivorRatio = 8决定了新生代中Eden区与一个Survivor区的空间比例是8:1 ,从输出的结果也可以清晰地看到“ eden space

c/c++常见面试题(一)

佐手、 提交于 2019-11-29 21:39:57
0.static、const、volatile的作用和区别 static: https://www.cnblogs.com/Manual-Linux/p/8870038.html 第一 、在修饰变量的时候,static修饰的静态局部变量只执行一次,之后再初始化无效。而且延长了局部变量的生命周期,直到程序运行结束以后才释放。 第二 、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 第三 、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0 const: 1.修饰的变量只读,不可改变 2.防止意外修改,减少bug 3.可以节省空间,避免不必要的 内存分配 volatile: 告诉编译器这个变量随时可变,不需要优化 1.请问全局变量和局部变量能否重名 能,局部会屏蔽全局。要用全局变量,需要使用"::" 2. 用三目运算符(X)>(Y)?(X):(Y)宏定义实现比较两个数的大小 #define MAX(X, Y) ((X)>(Y)?(X):(Y)) 3.malloc的了解 malloc是动态内存分配,是用户动态申请系统分配指定字节的内存块的函数。返回类型是 void* 类型 对应free,

Centos7 Docker安装mysql5.7

本小妞迷上赌 提交于 2019-11-29 19:11:19
Centos7 Docker安装mysql5.7,当然版本可以自定义,这里只是本人当前用的是5.7的。 1、拉取mysql5.7镜像 docker pull docker.io/mysql:5.7 2、拉取之后可以看到 docker images -a 3、下面为mysql容器运行创建挂载目录 mkdir -p /test/mysql/data //用于存放mysql数据备份 chmod -R 777 mysql //对当前目录进行授权,否则运行镜像后会发现statu 状态为exited mkdir -p /test/mysql/conf //用于存放mysql的主配置文件如 my.cnf mkdir -p /test/mysql/logs //用于存放mysql运行日志 4、进入本地 /test/mysql/conf目录中 touch my.cnf //创建mysql的住配置文件,然后填入配置的内容就好了 参考内容如下: [client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user =

hadoop 集群调优实践总结

余生长醉 提交于 2019-11-29 17:42:19
调优概述 # 几乎在很多场景,MapRdeuce或者说分布式架构,都会在IO受限,硬盘或者网络读取数据遇到瓶颈.处理数据瓶颈CPU受限.大量的硬盘读写数据是海量数据分析常见情况. IO受限例子: 索引 分组 数据倒入导出 数据移动和转换 CPU受限例子: 聚类/分类 复杂的文本挖掘 特征提取 用户画像 自然语言处理 我们需要从硬件规划和软件规划等多方面结合实现性能和效率的提升。 硬件规划 # 评估集群规模 # 我们需要搭建多少节点的hadoop集群?回答这个问题考虑的因素比较多:预算?数据量?计算资源? 需要多少计算资源可能不是特别好评估,推荐横向扩展,随业务规模和应用发展再考虑扩展。开始可以就按照数据量来评估数据规模,估计一下每天的数据增量?保存数据的周期是多少?有没有冷数据方案? 假设每天增长的数据为600G、3备份存储,以一年规划为例,大概存储为600G 3 360天=633T, 再考虑增加%20的预留,考虑未来数据增长的趋势,考虑应用计算等空间需求。为节省空间可考虑压缩存储(大概可以节省70%空间)。 同时考虑一定冗余量,如果集群一部分节点不可用也要保证业务正常使用(根据集群规模评估冗余比例)。 然后结合节点硬件规划和预算,确定集群规模。假如我们需要650T存储,可以采用30台12 x 2TB的存储配置或者 60台6 x 2TB配置,但是节点数量翻翻

jvm的内存参数配置(skycto JEEditor)

雨燕双飞 提交于 2019-11-29 17:11:49
转自: https://blog.csdn.net/wang379275614/article/details/78471604 1.jvm 的内存参数说明: -Xms :jvm 启动时申请的初始Heap 值,默认为操作系统物理内存的1/64 但是小于1G ;(8G 内存的机器为:128M); 默认当空余堆的内存大于70% 时,JVM 会减小到-Xms 制定的大小; -Xmx :JVM 可申请的最大Heap 值, 默认为无力内存的1/4 但小于1G;(8G 内存的机器为:1G) ;默认当空余堆内存小于40% 时,JVM 会增大Heap 到-Xmx 指定的大小; -XX:MinHeapFreeRation :指定堆内存的放缩比例; -Xmn: 配置年轻代大小,对系统性能影响较大; 老年代为-Xmx 的值减去它的值;( 大对象和大的数组对象会直接在老年代分配); -XX:PretenureSizeThreshold=? 用于配置大对象的界定, 默认为零; 超过其值就被认为是大对象; -Xss: java 每个线程的Stack 大小;jdk5 以后,每个线程堆栈大小为1M; 相同无力内存下,减小这个值能生成更多的线程; OS 对一个进程内的现场有限制,大致在3000~5000 左右; -XX:PermSize 持久代的初始化大小; -XX:MaxPermSize 持久代的最大内存大小:

JVM参数查看与设置

你说的曾经没有我的故事 提交于 2019-11-29 16:18:15
1 JVM内存管理的机制 1.1 堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。 可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的, 所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 1.1.1 堆内存分配 JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制; 空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。 说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。 1.1.2 非堆内存分配 JVM使用-XX

Redis

99封情书 提交于 2019-11-29 16:17:14
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 一、Redis安装和基本使用 wget http://download.redis.io/releases/redis-3.0.6.tar.gz tar xzf redis-3.0.6.tar.gz cd redis-3.0.6 make 启动服务端 src/redis-server 启动客户端 src/redis-cli redis> set foo bar OK redis> get foo "bar" 二、Redis的特性 使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2)