内存参数

JVM内存模型及参数调优

五迷三道 提交于 2020-02-09 08:13:27
堆、栈、方法区概念区别 1.堆 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。根据垃圾回收机制的不同, Java堆有可能拥有不同的结构,最为常见的就是将整个Java堆分为新生代和老年代。其中新声带存放新生的对象或者年龄不大的 对象,老年代则存放老年对象。新生代分为edn区、s0区、s1区,s0和s1也被称为from和to区域,他们是两块大小相等并且可以 互相角色的空间。绝大多数情况下,对象首先分配在eden区,在新生代回收后,如果对象还存活,则进入s0或s1区,之后每经 过一次新生代回收,如果对 象存活则它的年龄就加1,对象达到一定的年龄后,则进入老年代. 2.栈 Java栈是一块线程私有的空间,一个栈,一般由三部分组成:局部变量表、操作数据栈和帧数据区 局部变量表:用于报错函数的参数及局部变量 操作数栈:主要保存计算过程的中间结果,同时作为计算过程中的变量临时的存储空间。 帧数据区:除了局部变量表和操作数据栈以外,栈还需要一些数据来支持常量池的解析,这里帧数据区保存着 访问常量池的指针,方便计程序访问常量池,另外当函数返回或出现异常时卖虚拟机子必须有一个异常处理表,方便发送异常 的时候找到异常的代码,因此异常处理表也是帧数据区的一部分。 3.方法区 Java方法区和堆一样,方法区是一块所有线程共享的内存区域,他保存系统的类信息。

Cracking Digital VLSI Verification Interview 第四章

元气小坏坏 提交于 2020-02-08 16:18:52
目录 Hardware Description Languages Verilog SystemVerilog 对Cracking Digital VLSI Verification Interview:Interview Success这本书的汉化,最新更新请关注微信公众号 摸鱼范式 Hardware Description Languages Verilog [159] verilog中的阻塞赋值和非阻塞赋值有什么区别? verilog支持阻塞与非阻塞两种赋值方式。使用阻塞赋值时,计算和赋值会立刻执行。因此但是顺序执行块中由多个阻塞赋值,他们会按照阻塞的方式顺序执行。如下所示。 always @(posedge clk) begin x = a|b; y = a&b; z = x|y; end 在这个例子中,所有赋值都采用的时阻塞赋值,执行时会立刻进行计算,然后完成赋值操作。因此在第三条语句中,会将前两条语句中更新后的x和y用于第三条语句的计算并赋值。 在非阻塞赋值中,所有的赋值都将在当前的仿真时刻的最后执行。首先对右侧的表达式进行计算,然后才对左侧进行赋值,因此在下面的例子中,三条语句都先进行右侧语句的计算,然后再一起对左侧进行赋值操作。结果就是,第三条语句所采用的x和y是一个旧值,并不是前两条语句在这个仿真时刻改变后的值。 always @(posedge clk)

《go语言从入门到进阶实战》_徐波

痞子三分冷 提交于 2020-02-08 02:02:57
摘录 Go语言是Google公司开发的一种静态型、编译型并自带垃圾回收和并发的编程语言。 Go语言不使用虚拟机,只有运行时(runtime)提供垃圾回收和goroutine调度等。 Go语言使用自己的链接器,不依赖任何系统提供的编译器、链接器。因此编译出的可执行文件可以直接运行在几乎所有的操作系统和环境中。 从Go 1.5版本之后,Go语言实现自举,实现了使用Go语言编写Go语言编译器及所有工具链的功能。 Go语言可以利用自己的特性实现并发编译,并发编译的最小元素是包。从Go 1.9版本开始,最小并发编译元素缩小到函数,整体编译速度提高了20%。 Go语言的并发是基于goroutine,goroutine类似于线程,但并非线程。可以将goroutine理解为一种虚拟线程。Go语言运行时会参与调度goroutine,并将goroutine合理地分配到每个CPU中,最大限度地使用CPU性能。 在Go语言中,自增操作符不再是一个操作符,而是一个语句。因此,在Go语言中自增只有一种写法: i++ 如果写成前置自增“++i”,或者赋值后自增“a=i++”都将导致编译错误。 在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错。 布尔型无法参与数值运算,也无法与其他类型进行转换。 切片发生越界时,运行时会报出宕机,并打出堆栈

python笔记13

半世苍凉 提交于 2020-02-08 00:00:34
今日内容 装饰器 推导式 模块【可选】 内容回顾 函数 参数 def (a1,a2):pass def (a1,a2=None):pass 默认参数推荐用不可变类型,慎用可变类型。 def(*args,**kwargs):pass 注意:位置参数 > 关键字参数 面试题 函数可以做参数【知识点】。 def func(arg): arg() def show(): pass func(show) 函数的参数传递的是什么?【内存地址=引用 or 值】 v = [11,2,33,4] def func(arg): print(id(arg)) # 列表内存地址 print(id(v)) # 列表内存地址 func(v) # 传递的是内存地址。 *args和**kwargs的作用 返回值 常见数据类型可以返回 函数也可以返回 def func(): def inner(): pass return inner v = func() 特殊 默认没返回就是None return 1,2,3 等价于 return (1,2,3,4,) 执行函数 函数不被调用,内部代码永远不执行。 def func(): return i func_list = [] for i in range(10): func_list.append(func) print(i) # 9 v1 = func_list[4]

Linux内核 -- vm内存相关参数

↘锁芯ラ 提交于 2020-02-06 16:46:14
查看方式: 1、sysctl -a 2、cat /proc/sys/vm/overcommit_memory 一、overcommit_memory 内核源码中的介绍: This value contains a flag that enables memory overcommitment. When this flag is 0, the kernel attempts to estimate(估算) the amount of free memory left when userspace requests more memory. When this flag is 1, the kernel pretends there is always enough memory until it actually runs out. When this flag is 2, the kernel uses a "never overcommit" policy that attempts to prevent any overcommit of memory. This feature can be very useful because there are a lot of programs that malloc() huge amounts of memory "just

结对编程第二次作业

自古美人都是妖i 提交于 2020-02-04 20:27:49
结对编程第二次作业 小学四则运算自动生成程序 一、题目要求 本次作业要求两个人合作完成,驾驶员和导航员角色自定,鼓励大家在工作期间角色随时互换,这里会布置两个题目,请各组成员根据自己的爱好任选一题。 我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求: 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内、百以内等) 用户选择是否有括号、是否有小数 用户选择输出方式(如输出到文件、打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) ---------- 点击查看他的代码: https://coding.net/u/mayingjiu123/p/zuoye/git?public=true 二、单元测试 由于本次编程结果算式皆为随机生成,故选择手动测试方式进行测试 加法小数: 随机符号小数: 随机符号括号小数: 三、代码分析表格 功能模块名称   C语言小词法识别程序 审查人   霍超然 审查日期   2017.4.4 代码名称   kaishi 代码作者   马英九 文件结构 重要性 审查项 结论 头文件和定义文件的名称是否合理? 是     头文件和定义文件的目录结构是否合理? 是   版权和版本声明是否完整? 是 重要 头文件是否使用了 ifndef/define/endif 预处理块? 是

python函数

我只是一个虾纸丫 提交于 2020-02-04 05:25:27
本文目录 函数基础 函数的返回值 函数的参数 函数对象 函数嵌套 名称空间 作用域 闭包函数 装饰器 函数递归 三元表达式、列表生成式、字典生成式 内置函数 迭代器 生成器 函数基础 函数,即具备某一功能的工具。 函数的存在意义:程序的组织结构不清晰,可读性差;代码冗余;可扩展性差 使用函数必须遵循的规则:先定义,后调用 def 函数名(参数1,参数2,...): """ 文档注释 """ code1 code2 code3 ...... return 返回值 def:定义函数的关键字 函数名: 就相当于一个变量名,指向函数的内存地址, 注意:函数的内存地址()就可以出发函数体代码的执行 参数: 参数是函数的调用者为函数体代码传值的媒介,在python中函数的参数无需声明类型 """文档注释""" : 推荐写上 代码块:就是函数体功能的具体实现 return 返回值 :函数体代码块运行的成果 定义无参函数:当函数体代码逻辑不依赖任何传入的值就能执行,就不需要定义函数 定义有参函数:当函数体的代码逻辑依赖于外部调用者传入的值才能执行,必须定义参数用来接收外部传入的值 #1.1 无参函数 # def foo(): # print('from foo') # foo() #1.2 有参函数 # def bar(x,y): # print(x,y) # bar(1,2) #1.3 空函数

MYSQL配置参数优化详解

风流意气都作罢 提交于 2020-01-31 10:33:51
目录 1)连接请求的变量 1、max_connections 2、back_log 3、wait_timeout和interative_timeout 2)缓冲区变量 4、key_buffer_size 5、query_cache_size(查询缓存简称QC) 6、max_connect_errors: 7、sort_buffer_size: 8、max_allowed_packet=32M 9、join_buffer_size=2M 10、thread_cache_size=300 3)配置Innodb的几个变量 11、innodb_buffer_pool_size 12、innodb_flush_log_at_trx_commit 13、innodb_thread_concurrency=0 14、innodb_log_buffer_size 15、innodb_log_file_size=50M 16、innodb_log_files_in_group=3 17、read_buffer_size=1M 18、read_rnd_buffer_size=16M 19、bulk_insert_buffer_size=64M 20、binary log 参数汇总: MySQL参数优化对于不同的网站,及其在线量,访问量,帖子数量,网络情况,以及机器硬件配置都有关系,优化不可能一次性完成

PHP-php-fpm配置优化

本小妞迷上赌 提交于 2020-01-31 00:16:19
前言:   1.少安装PHP模块, 费内存   2.调高linux内核打开文件数量,可以使用这些命令(必须是root帐号)(我是修改/etc/rc.local,加入ulimit -SHn 51200的) echo `ulimit -HSn 65536` >> /etc/profile echo `ulimit -HSn 65536` >> /etc/rc.local source /etc/profile   如果`ulimit -n`数量依旧不多(即上面配置没生效)的话, 可以在 /etc/security/limits.conf 文件最后加上 * soft nofile 51200 * hard nofile 51200 1. 与Nginx使用Unix域Socket通信(Nginx和php-fpm在同一台服务器)    Unix域Socket因为不走网络,的确可以提高Nginx和php-fpm通信的性能,但在高并发时会不稳定 。   Nginx会频繁报错:connect() to unix:/dev/shm/php-fcgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream   可以通过下面两种方式提高稳定性:   1)调高nginx和php-fpm中的 backlog

Spark性能调优-集群资源分配策略

懵懂的女人 提交于 2020-01-30 06:28:51
展开 开发完成Spark作业之后,我们在运行Spark作业的时候需要为其配置一些资源参数,比如num-executors,executor-memory等,这些参数基本上都是可以在spark-submit命令中作为参数设置,但是如何设置合适的参数值是需要我们权衡考虑的(集群资源,调优经验,任务大小等)。参数设置的不合适往往会导致集群资源得不到有效的利用,设置的太大可能会导致资源不够而引发异常,太小的话会使得闲置的资源得不到有效利用,作业运行的极为缓慢。所以,如何合理有效的分配Spark作业资源是需要Spark学习者重点考虑的。下面将一些理论知识结合自己的实践进行讲解。 集群资源情况 我们在为自己的Spark作业设置资源参数的时候,需要对公司的集群资源使用情况有一个较为清晰的了解,主要了解以下几个方面: (1)集群总体情况 公司集群的整体配置信息,比如总内存,内存使用情况,节点数等,对集群的资源有一个整体的认识。 可以从Yarn页面来了解集群整体情况,如红线圈出的一些重要信息: (2)资源队列配置 一般使用资源管理器,比如Yarn,都会设置一些资源队列,比如Hadoop,Spark,default队列等。这里以讯飞公司情况为例讲解,讯飞使用Yarn资源管理器,这里采用Capacity Scheduler任务调度模式,设置了两个资源队列:default和Spark