内存参数

【笔记】java基础

旧城冷巷雨未停 提交于 2019-11-27 11:41:35
java基础知识 首先:Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行。 JAVA:public static void main(String args[]) {}详解 是Java程序的入口方法,JVM在运行程序时,会首先查找main()方法。 参数args的主要作用是为程序使用者在命令行状态下与程序交互提供了一种手段。此外在其他类中直接使用main()函数,并传递参数也是可行的,虽然这种方法不太常用,但毕竟为我们提供了一种选择。 static表明main()方法是一个静态方法,即方法中的代码时存储在静态区的,只要类被加载后,就可以使用该方法而不需要通过实例化对象来访问,可以直接通过 类名.main() 直接访问; main是JVM识别的特殊分方法名,是程序的入口方法; JVM在启动时就是按照上述方法的签名(必须有public、static修饰,返回值为void,且方法的参数为字符串数组)来查找方法的入口地址,若找到就执行,找不到就会报错. 因为main是程序的入口方法,所以当程序运行时,第一个执行的方法就是main()方法。 通常来讲,要执行一个类的方法,先必须实例化一个类的对象,然后通过对象来调用这个方法。

Linux监控工具介绍系列——smem

强颜欢笑 提交于 2019-11-27 09:02:16
smem工具介绍 smem是Linux系统上的一款可以生成多种内存耗用报告的命令行工具。与现有工具不一样的是smem可以报告实际使用的物理内存(PSS),这是一种更有意义的指标。可以衡量虚拟内存系统的库和应用程序所占用的内存数量。 由于大部分的物理内存通常在多个应用程序之间共享,名为实际使用物理内存(RSS)的这个标准的内存耗用衡量指标会大大高估内存耗用情况。PSS这个参数而是衡量了每个应用程序在每个共享内存区中的“公平分配”,给出了一个切合实际的衡量指标。 smem有许多功能特性: 系统概况列表 按进程、映射和用户列表 按用户、映射或用户过滤 来自多个数据源的可配置列 可配置的输出单位和百分比 可配置的标题和总和 从/proc读取活动数据 从目录镜像或经过压缩的打包文件读取数据快照 面向嵌入式系统的轻型捕获工具 内置的图表生成功能 smem的系统要求 系统内核为2.6.27以上 Python版本必须为2.4或以上 依赖matplotlib库生成图表(可选的,自动检测)依赖matplotlib,是因为smem除了一般的文本信息报告外,smem 也可以生成条状或饼状图。 对应的英文原文如下: smem is a tool that can give numerous reports on memory usage on Linux systems. Unlike existing

【JVM】JVM参数

时间秒杀一切 提交于 2019-11-27 08:14:38
JVM参数的含义 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. -Xmx 最大堆大小 物理内存的1/4(<1GB) 默认(MaxHeapFreeRatio参数可以调整)空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 -Xmn 年轻代大小(1.4or lator) 注意 :此处的大小是(eden+ 2 survivor space).与jmap -heap中显示的New gen是不同的。 整个堆大小=年轻代大小 + 年老代大小 + 持久代大小. 增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8 -XX:NewSize 设置年轻代大小(for 1.3/1.4) -XX:MaxNewSize 年轻代最大值(for 1.3/1.4) -XX:PermSize 设置持久代(perm gen)初始值 物理内存的1/64 -XX:MaxPermSize 设置持久代最大值 物理内存的1/4 -Xss 每个线程的堆栈大小 JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程

默认参数的陷阱

佐手、 提交于 2019-11-27 08:02:55
  当默认参数为可变数据类型时(列表,元组,字典等),在函数体内给这个数据类型赋值,这个默认参数会随着每一次函数体的赋值而改变,由于每次都是在原列表的基础上操作,所以列表的内存地址一直不变;  而当在传参的时候给这个默认参数重新赋值时,列表会变成一个新的列表,内存会开辟一个新的地址存放它,再对它进行传参操作时,每一次操作都是在这个新开辟的内存地址做出修改,所以内存地址不会也发生改变; def func(l = []): print(id(l)) l.append(1) print(l) func() func([3,3,3]) func() func([2,3]) func() #打印 1986524631560 [1] 1986526648072 [3, 3, 3, 1] 1986524631560 [1, 1] 1986526648072 [2, 3, 1] 1986524631560 [1, 1, 1] 所以会产生两个内存地址,一个是不进行传参时的,一个时进行传参时的;也就是说在函数体对它进行操作时,如果没有对它进行传参,它将继续使用定义时的内存地址(每一个函数被定义后,执行时他都会被读取放在内存当中,只有被调用时才会从内存当中拿出来使用), 调用时,当对它进行传参操作,它会开辟一个新的内存存放传参时的数据,内存地址跟随改变 来源: https://www.cnblogs

test5

浪尽此生 提交于 2019-11-27 07:51:15
对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式机制,即多台机器同时产生负载的功能。 以下参数分析可用于配置负载分布台数的参考:通常,4G内存最多可达到2000左右的并发量对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式机制,即多台机器同时产生负载的功能。 以下参数分析可用于配置负载分布台数的参考:通常,4G内存最多可达到2000左右的并发量对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式机制,即多台机器同时产生负载的功能。 以下参数分析可用于配置负载分布台数的参考:通常,4G内存最多可达到2000左右的并发量对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式机制,即多台机器同时产生负载的功能。 以下参数分析可用于配置负载分布台数的参考:通常,4G内存最多可达到2000左右的并发量对于并发量很大的需求,如上万并发量,受到CPU和内存的限制,单机模拟场景是实现不了的,为了让JMeter提供更大的负载能力,须使用它的分布式机制

C#面试题

戏子无情 提交于 2019-11-27 07:10:55
文章转载自: http://www.pythonheidong.com/blog/article/2184/ 1.维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑?为什么? 答:尽可能用约束(包括CHECK、主键、唯一键、外键、非空字段)实现,这种方式的效率最好;其次用触发器,这种方式可以保证无论何种业务系统访问数据库都能维持数据库的完整性、一致性;最后再考虑用自写业务逻辑实现,但这种方式效率最低、编程最复杂,当为下下之策。 2.什么是事务?什么是锁? 答:事务是指一个工作单元,它包含了一组数据操作命令,并且所有的命令作为一个整体一起向系统提交或撤消请求操作,即这组命令要么都执行,要么都不执行。   锁是在多用户环境中对数据的访问的限制。SqlServer自动锁定特定记录、字段或文件,防止用户访问,以维护数据安全或防止并发数据操作问题,锁可以保证事务的完整性和并发性。 3.什么是索引,有什么优点? 答:索引象书的目录类似,索引使数据库程序无需扫描整个表,就可以在其中找到所需要的数据,索引包含了一个表中包含值的列表,其中包含了各个值的行所存储的位置,索引可以是单个或一组列,索引提供的表中数据的逻辑位置,合理划分索引能够大大提高数据库性能。 4.视图是什么?游标是什么? 答:视图是一种虚拟表,虚拟表具有和物理表相同的功能,可以对虚拟表进行增该查操作;

Delphi TStream 详细介绍

ぃ、小莉子 提交于 2019-11-27 05:01:19
Delphi TStream 详细介绍 Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对象技术的优点,应用程序可以相当容易地在各种Stream对象中拷贝数据。   下面介绍各种对象的数据和方法及使用方法。 TStream对象   TStream对象是能在各种媒介中存储二进制数据的对象的抽象对象。从TStream 对象继承的对象用于在内存、Windows资源文件、磁盘文件和数据库字段等媒介中存储数据。   Stream中定义了两个属性:Size和Position。它们分别以字节为单位表示的流的大小和当前指针位置。TStream中定义的方法用于在各种流中读、写和相互拷贝二进制数据。因为所有的Stream对象都是从TStream中继承来的,所以在TStream中定义的域和方法都能被Stream对象调用和访 问。此外,又由于面向对象技术的动态联编功能,TStream为各种流的应用提供了统一的接口,简化了流的使用;不同Stream对象是抽象了对不同存储媒介的数据上的操作,因此

面试宝典

落花浮王杯 提交于 2019-11-27 03:25:16
目录: 值类型和引用类型的区别 装箱拆箱(强类型 弱类型) C# 四大基本方法:tostring() equals() gethashcode() gettype() 泛型(安全性 为什么效率高) 接口和类区别 抽象类(方法)和虚类(方法)的区别 了解下.Net framework Const和Readonly 父类与子类之间的关系 继承 重写 重载 单例模式 实际编程用的较多 序列化和反序列化 CLR (概念 核心功能) Asp.net页面传值的几种方式 Dataset和Datareader的区别 RequireJs 对象获取类型 WCF 三要素 绑定方式 应用程序域 如何处理异常 haveing groupby Varchar nvarchar区别 常用的字符串函数(网上搜下) 谈谈final, finally, finalize的区别 了解三层架构 mvc ADO.NET 数据库连接常用的几个类型 C# : 值类型和引用类型的区别 值类型和引用类型理解透彻后,我们知道C#里面是值传递,但是有些变量是引用类型的,在传递和拷贝时需要特别注意。方法传递参数时加上ref(out),为引用传递参数。 值传递仅仅传递的是值,不影响原始值。 引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。 值类型 : 原类型 (Sbyte、Byte、Short、Ushort、Int、Uint

Mysql优化之6年工作经验总结

我的未来我决定 提交于 2019-11-27 03:09:58
我们究竟应该如何对 MySQL 数据库进行优化?下面我就从 MySQL 对硬件的选择、 MySQL 的安装、 my.cnf 的优化、 MySQL 如何进行架构设计及数据切分等方面来说明这个问题。 服务器物理硬件的优化 在挑选硬件服务器时,我们应该从下面几个方面着重对 MySQL 服务器的硬件配置进行优化,也就是说将项目中的资金着重投入到如下几处: 1 、磁盘寻道能力(磁盘 I/O ),我们现在用的都是 SAS15000 转的硬盘,用 6 快这样的硬盘作 RAID1+0 。 MySQL 每一秒钟都在进行大量、复杂的查询操作,对磁盘的读写量可想而知,所以,通常认为磁盘 I/O 是约制 MySQL 性能的最大因素之一。对于日均访问量在 100 万 PV 以上的论坛( Discuz )、博客( Wordpress ),如果性能不好,造成的直接后果就是 MySQL 的性能会非常低下!解决这一制约因素可以考虑解决访问是:使用 RAID1+0 磁盘阵列,注意不要尝试 RAID5 , MySQL 在 PAID5 磁盘阵列上的效率不会像你期待的那样快,如果资金允许,可以选择固态硬盘 SSD 来替代 SAS 硬盘做 RAID1+0 。 2 、 CPU 对于 MySQL 的影响也是不容忽视的,建议选择运算能力强悍的 CPU 。推荐使用 DELL R710 (双四核)

my.cnf配置文件实用优化

和自甴很熟 提交于 2019-11-27 03:09:08
[client] 1.登陆过程自动化(这样做可以让你在命令行登陆的时候免去输入用户名和密码) host="mysql服务器地址" user="用户名" password=“密码” 2.自动切换数据库(这样做可以避免每次进入都要use 某数据库) database="你的数据库名字" [mysqld] auto-rehash 启用TAB键自动补齐 skip-locking #避免MySQL的外部锁定,减少出错几率增强稳定性。 skip-name-resolve #禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! back_log = 384 #back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。 如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自 己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 key_buffer_size = 384M #key_buffer_size指定用于索引的缓冲区大小