内存参数

tomcat线程优化

岁酱吖の 提交于 2019-12-05 14:28:08
tomcat线程优化 =================================== tomcat线程池 在tomcat服务中每一个用户请求都是一个线程,所以可以使用线程池来提高性能。 1、线程池是什么? 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后创建线程后自动启动这些任务,线程池线程都是后台线程。每个线程都使用默认的堆栈大小。 它由线程池管理器,工作线程,任务接口,任务队列组成。 2、在什么情况下使用线程池?。 单个任务处理的时间短。将需处理的任务的数量大。 3、有什么好处? 【1】减少在创建和销毁线程所花的时间以及系统资源的开锁 【2】城小在用线程范、有可能址成系统创建大量线程而导数消耗宏系统内存以及“过度切换”。 =================================== 参数说明 maxThreads(最大线程数):默认值是200(可适当调整)如果配置了一个。Executor,则该属性的任何值集将被正确记录,但是它将被显示为-1。 minSpareThreads(最小活跃线程数):默认是25(调整活跃线程数的时候必须开启下面的参数)。 prestartminSpareThreads(是否在启动时就生成minSpareThreads个线程):默认是flase,改为true则开启 MaxQueueSize(最大的等待队列数,超过则请求拒绝)

【java虚拟机】jvm调优原则

旧巷老猫 提交于 2019-12-05 11:27:56
转自:https://www.cnblogs.com/xiaopaipai/p/10522794.html 合理规划jvm性能调优 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内容: 1、已了解jvm 垃圾收集器 2、已了解jvm 性能监控常用工具 3、能够读懂gc日志 4、确信不为了调优而调优,jvm调优不能解决一切性能问题 如果对这些不了解不建议读本篇文章。 本篇文章基于jvm性能调优,结合jvm的各项参数对应用程序调优,主要内容有以下几个方面: 1、jvm调优的一般流程 2、jvm调优所要关注的几个性能指标 3、jvm调优需要掌握的一些原则 4、调优策略&示例 一、性能调优的层次 为了提升系统性能,我们需要对系统的各个角度和层次来进行优化,以下是需要优化的几个层次。 从上面我们可以看到,除了jvm调优以外,还有其他几个层面需要来处理,所以针对系统的调优不是只有jvm调优一项,而是需要针对系统来整体调优,才能提升系统的性能。本篇只针对jvm调优来讲解,其他几个方面,后续再介绍。 在进行jvm调优之前,我们假设项目的架构调优和代码调优已经进行过或者是针对当前项目是最优的。这两个是jvm调优的基础

Java基础知识

走远了吗. 提交于 2019-12-05 11:21:29
1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点: 性能比面向过程低 2. Java 语言有哪些特点 简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); 可靠性; 安全性; 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持); 支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支持网络编程而且很方便); 编译与解释并存; 3. 什么是 JDK 什么是 JRE 什么是 JVM 三者之间的联系与区别 这几个是Java中很基本很基本的东西,但是我相信一定还有很多人搞不清楚!为什么呢?因为我们大多数时候在使用现成的编译工具以及环境的时候,并没有去考虑这些东西。 JDK: 顾名思义它是给开发者提供的开发工具箱,是给程序开发者用的。它除了包括完整的JRE(Java Runtime

redis--redis.conf详细信息

若如初见. 提交于 2019-12-05 09:06:43
redis.conf详细配置信息 1 1、pwd 2 ##先查看当前路径,将下载好的redis上传。redis稳定版本为第2位偶数的。 3 2、/home/bxapp 4 ##当前路径 5 3、mkdir redis 6 ##创建redis文件,将文件redis-4.0.11.tar.gz上传至/opt文件夹 7 4、tar -zxvf redis-4.0.11.tar.gz 8 ##解压文件夹 9 5、cd redis-4.0.11/ 10 6、 make && make PREFIX=/usr/local/redis install 11 ##通过make命令进行安装Redis(需要root权限) 12 7、cd /usr/local/ 13 8、mkdir -p /usr/local/redis-cluster 14 9、cd redis-cluster/ 15 10、mkdir 7031 7032 7033 7034 7035 7036 16 ##数量根据集群数量来定 17 11、cp opt/redis-4.0.11/redis.conf usr/local/redis-cluster 18 12、cp redis.conf 7031 19 13、编辑对应的redis.conf文件,各个修改项信息如下(详细配置信息见备注) 20 1)绑定端口,port 7031 21 2

Spark配置参数详解

我怕爱的太早我们不能终老 提交于 2019-12-05 06:48:26
以下是整理的Spark中的一些配置参数,官方文档请参考 Spark Configuration 。 Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh 脚本设置。例如IP地址、端口等信息 日志配置:可以通过log4j.properties配置 Spark属性 Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它。这些属性可以直接在 SparkConf 上配置,然后传递给 SparkContext 。 SparkConf 允许你配置一些通用的属性(如master URL、应用程序名称等等)以及通过 set() 方法设置的任意键值对。例如,我们可以用如下方式创建一个拥有两个线程的应用程序。 val conf = new SparkConf() .setMaster("local[2]") .setAppName("CountingSheep") .set("spark.executor.memory", "1g") val sc = new SparkContext(conf) 动态加载Spark属性 在一些情况下,你可能想在 SparkConf 中避免硬编码确定的配置。例如

jconsole & jvisualvm远程监视websphere服务器JVM的配置案

霸气de小男生 提交于 2019-12-05 06:22:44
VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe)。 https://visualvm.dev.java.net/ 一、介绍 VisualVM,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的). 从界面上看还是比较简洁的,左边是树形结构,自动显示当前本机所运行的Java程序,还可以添加远程的Java VM,其中括号里面的PID指的是进程ID。OverView界面显示VM启动参数以及该VM对应的一些属性。Monitor界面则是监控Java堆大小,Permgen大小,Classes和线程数量。jdk不同版本中界面会不太一致,如有的含cpu监控,有的则不含(jdk1.6.0_10未包含)。 官网上关于jvisualvm的用法介绍 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html 作用:JVM和监控的应用程序运行在不同的服务器上,减轻应用程序的负担,特别是HeapDump的时候,应用常能够续负担很大。 VisualVM使用简单,几乎0配置,功能还是比较丰富的

引用和内联函数

我怕爱的太早我们不能终老 提交于 2019-12-05 04:45:33
一 内联函数   内联函数是C++为提高程序运行速度所做的一项改进。   编译过程的最终产品是可执行程序(由一组机器语言指令组成)。程序运行时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址。   常规函数调用过程---程序跳到函数的地址,并在函数结束时返回。即,程序执行到函数调用指令时,将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数代码,返回值放入寄存器中,然后跳回到地址被保存的指令处(这与阅读文章时停下来看标注,并在阅读完标注后返回到之前阅读的地方类似)   内联函数是将相应的代码替换函数调用。优点是内联函数运行速度比常规函数稍快,缺点是占用更多内存。   要使用内联函数,需要:   (1)在函数声明前加上关键字inline   (2)在函数定义前加上关键字inline 注:内联函数不能递归   另:内联函数与宏的区别 内联函数参数传递方式与常规函数一样,宏是简单的文本替换来完成 例如: inline double square(double x) {return x*x; } #define SQUARE(X) X*X SQUARE(0.5) //->0.5*0.5 SQUARE(4.5+7.5) //4.5+7.5*4.5+7.5 SQUARE(c++) //c++*c++ 二 引用变量

Tomcat性能调优

和自甴很熟 提交于 2019-12-05 03:13:58
tomcat/bin/setenv.sh 用于tomcat启动的参数配置(当前目录下,会在tomcat启动时自动调用) cat tomcat/bin/catalina.sh if [ -r "$SETENVPATH/bin/setenv.sh" ]; then . "$SETENVPATH/bin/setenv.sh" elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then . "$CATALINA_HOME/bin/setenv.sh" fi cat tomcat/bin/setenv.sh #!/bin/sh export CATALINA_OPTS="-Xmx350M -Xms350M -XX:PermSize=64M -XX:MaxPermSize=64m -XX:+UseParallelGC -Dlog4j.configuration=file:///home/www/config/java/scheduler_log4j.xml" export CATALINA_PID="$CATALINA_BASE/logs/catalina.pid" ............ -------------------------------------------------------------------------- 1、

oracle体系结构简介

匆匆过客 提交于 2019-12-05 02:36:43
oracle体系结构简介 一、物理存储结构 1、数据文件 存放数据库数据,以dbf为扩展名。将数据放在多个数据文件中, 再将数据文件分放在不同的硬盘中,可以提高存取速度。数据文 件由数据块构成,块大小由数据库创建时确定。 2、重做日志文件,以rdo为扩展名。含对数据库所做的更改记录, 这样万一出现故障可以启用数据恢复。一个数据库至少需要两个 重做日志文件。重做日志在日志文件中以循环的方式工作。有 归档日志模式和非归档日志模式。 3、控制文件,以ctl或ctrl为扩展名。控制文件维护数据库的全局 物理结构,记录数据库中所有文件的控制信息,每个数据库至少 要有一个控制文件,建议用户使用两个或更多控制文件,并存放 在不同的磁盘上。Oracle系统通过控制文件保持数据库的完整性, 以及决定恢复数据时使用哪些重做日志。 4、参数文件,以ora为扩展名。在一个数据库启动时,每个参数都有 一个默认值,而参数文件中的设置值被用来更改默认值,参数值 极大影响了oracle如何去执行其不同的任务。参数文件包括以下 几种: <1>、初始化参数文件。当创建一个数据库时,oracle创建了一个 默认的init.ora文件,如果不修改任何参数,oracle将用所有的 缺省值来启动数据库,通常根据实际的应用修改参数设置以提高 性能。 <2>、配置参数文件。一般被命名为config.ora,它被用于特定实

Eclipse.ini参数简介

淺唱寂寞╮ 提交于 2019-12-04 22:04:09
本篇文章讲述eclipse.ini参数的含义和设置。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编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据