内存参数

调整JVM内存大小

匿名 (未验证) 提交于 2019-12-02 21:35:18
首次运行公司项目,出现了内存溢出,具体出现java.lang.OutOfMemoryError: PermGen space和java.lang.OutOfMemoryError:GC overhead limit exceeded异常 调整运行时JVM内存大小主要有两种方式: 1,在Eclipse中配置 具体可配置的参数还有很多,此处仅设置了这几个参数,有需要设置别的参数的同学,请自行添加即可。 2,在Tomcat的配置文件中配置    Tomcat分为安装板(.exe)和解压版(.zip,tar.zip,解压即用无需安装的),二者JVM参数的配置方式有区别,这里只介绍解压版的JVM参数内存配置方式,安装板的配置方式 即可。 3,查看JVM参数是否设置成功 4, 注意!!! 两种配置方式的优先级是Eclipse的配置优先级高于Tomcat,所以,在配置的时候,只需要选择一种方式配置即可,两种方式都使用的话,项目启动时默认使用Eclipse 中的配置。         文章来源: 调整JVM内存大小

oracle学习篇:四、内存管理

Deadly 提交于 2019-12-02 21:26:52
4 内存管理 4.1 SGA管理 4.1.1 SGA的组成 buffer cache,shared pool,redo log buffer,large pool,java pool,streams pool select * from v$sgainfo; 4.1.2 SGA与共享内存 SGA的设置在Linux/UNIX上和一个操作系统内核参数有关,这个参数是shmmax。 在Solaris上,该参数由/etc/system文件中shmsys:shminfo_shmmax定义;在linux上,该参数由/proc/sys/kernel/shmmax参数定义。 shmmax内核参数定义的是系统运行的单个共享内存段的最大值,如果该参数设置小于SGA设置,那么SGA仍然可以创建成功,但是会被分配到多个共享内存段。 在windows系统中,由于系统采用多线程服务器(所有oracle进程实际上都是一个进程中的线程),所以不存在共享内存的问题,无需进行特殊设置。 shmmax内核参数定义的是系统运行的单个共享内存段的最大值,如果该参数设置小于SGA设置,那么SGA仍然可以创建成功 查看shmmax值: more /porc/sys/kernel/shmmax 查看操作系统版本: cat /etc/redhat-release 查看操作系统发行版号: uname -r ipcs查看共享内存的分配

JVM运行时内存结构

时间秒杀一切 提交于 2019-12-02 20:09:54
JVM运行时内存结构 JVM内存模型 JVM运行时内存=共享内存区+线程内存区 共享内存区 共享内存区=持久代+堆 持久代=方法区+其他 堆=Old Space+Young Space Young Space=Eden+S0+S1 持久代 JVM用持久代(Permanent Space)实现方法区,主要存放所有已加载的类信息,方法信息,常量池等等。 可通过-XX:PermSize和-XX:MaxPermSize来指定持久代初始化值和最大值。 Permanent Space并不等同于方法区,只不过是Hotspot JVM用Permanent Space来实现方法区而已,有些虚拟机没有Permanent Space而用其他机制来实现方法区。 堆 堆,主要用来存放类的对象实例信息。 堆分为Old Space(又名,Tenured Generation)和Young Space。 Old Space主要存放应用程序中生命周期长的存活对象; Eden(伊甸园)主要存放新生的对象; S0和S1是两个大小相同的内存区域,主要存放每次垃圾回收后Eden存活的对象,作为对象从Eden过渡到Old Space的缓冲地带(S是指英文单词Survivor Space)。 堆之所以要划分区间,是为了方便对象创建和垃圾回收,后面垃圾回收部分会解释 线程内存区 线程内存区=单个线程内存+单个线程内存+.....

mysql配置文件

狂风中的少年 提交于 2019-12-02 19:57:10
[client] 客户端设置,即客户端默认的连接参数 port = 3306 默认连接端口 socket = /usr/local/mysql/data/mysql.sock 用于本地连接的socket套接字 default-character-set = utf8mb4 编码 [mysqld] 服务端基本设置 port = 3306 MySQL监听端口 socket = /usr/local/mysql/data/mysql.sock 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件 pid-file = /usr/local/mysql/data/mysql.pid pid文件所在目录 basedir = /usr/local/mysql 使用该目录作为根目录(安装目录) datadir = /usr/local/mysql/database 数据文件存放的目录 tmpdir = /usr/local/mysql/data/tmp MySQL存放临时文件的目录 character_set_server = utf8mb4 服务端默认编码(数据库级别) collation_server = utf8mb4_bin 服务端默认的比对规则,排序规则 user = root MySQL启动用户。如果是root用户就配置root,mysql用户就配置mysql log

JVM

牧云@^-^@ 提交于 2019-12-02 18:35:18
1、 简述JVM垃圾回收算法分类 常用的垃圾收集算法 JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟随着回收了。而Java堆区和方法区则不一样、不一样!(怎么不一样说的朗朗上口),这部分内存的分配和回收是动态的,正是垃圾收集器所需关注的部分 复制算法: 为了解决Mark-Sweep算法的缺陷,Copying算法就被提了出来。它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用的内存空间一次清理掉,这样一来就不容易出现内存碎片的问题。具体过程如下图所示: 这种算法虽然实现简单,运行高效且不容易产生内存碎片,但是却对内存空间的使用做出了高昂的代价,因为能够使用的内存缩减到原来的一半。 很显然,Copying算法的效率跟存活对象的数目多少有很大的关系,如果存活对象很多,那么Copying算法的效率将会大大降低。 复制算法的提出是为了克服句柄的开销和解决内存碎片的问题。它开始时把堆分成 一个对象 面和多个空闲面, 程序从对象面为对象分配空间,当对象满了,基于copying算法的垃圾 收集就从根集合

Yarn简单介绍及内存配置

泪湿孤枕 提交于 2019-12-02 18:06:07
本文出自: http://blog.chinaunix.net/uid/28311809/abstract/1.html 在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Yarn的资源抽象container。 我么知道MRv1存在的主要问题是:在运行时,JobTracker既负责资源管理又负责任务调度,这导致了它的扩展性、资源利用率低等问题。之所以存在这样的问题,是与其最初的设计有关,如下图: 从上图可以看到,MRv1是围绕着MapReduce进行,并没有过多地考虑以后出现的其它数据处理方式 。按着上图的设计思路,我们每开发一种数据处理方式(例如spark),都要重复实现相应的集群资源管理和数据处理。因此,Yarn就很自然的被开发出来了。 Yarn对MRv1的最大改进就是将资源管理与任务调度分离,使得各种数据处理方式能够共享资源管理,如下图所示: 从上图我们可以看到,Yarn是一种统一资源管理方式,是从MRv1中的JobTracker分离出来的。这样的好处显而易见:资源共享,扩展性好等。 MRv1与Yarn的主要区别:在MRv1中,由JobTracker负责资源管理和作业控制,而Yarn中,JobTracker被分为两部分:ResourceManager(RM)和ApplicationMaster(AM)。如下图所示: 从上图中,我们可以清晰的看到

Java11 新特性

Deadly 提交于 2019-12-02 17:30:24
Java 11新特性的详细解释。JDK 11已经于 2018年9月25日正式发布,那么Java 11主要包含哪些新特性呢? JDK 11是Java SE 11平台版本11的开源参考实现,由JSR 384在Java Community Process中指定。 阿里巴巴是中国唯一的JCP委员会成员公司,参与Java规范制定。 该版本的功能和时间表是通过JEP流程提出和跟踪的,并由JEP 2.0提案进行了修订。 使用JDK Release Process(JEP 3)生成发布。 Java11 主要新特性 详解 1、ZGC:可伸缩低延迟垃圾收集器 ZGC 即 Z Garbage Collector(垃圾收集器或垃圾回收器),这应该是 Java 11 中最为瞩目的特性,没有之一。ZGC 是一个可伸缩的、低延迟的垃圾收集器,主要为了满足如下目标进行设计: GC 停顿时间不超过 10ms 既能处理几百 MB 的小堆,也能处理几个 TB 的大堆 应用吞吐能力不会下降超过 15%(与 G1 回收算法相比) 方便在此基础上引入新的 GC 特性和利用 colord 针以及 Load barriers 优化奠定基础 当前只支持 Linux/x64 位平台 停顿时间在 10ms 以下,10ms 其实是一个很保守的数据,即便是 10ms 这个数据,也是 GC 调优几乎达不到的极值。根据 SPECjbb

linux常用命令学习

独自空忆成欢 提交于 2019-12-02 16:44:06
linux常用命令学习 1.whoami :打印与当前生效的用户 ID 关联的用户名 2.hostname 查看主机名 修改主机名(永久修改) hostnamectl set-homename 新的主机名 3.修改linux的命令提示符,通过变量PS1控制 echo $变量名 #打印出变量的值 #输出PS1变量的值 echo $PS1 #修改变量的值 [\u@\h \W]\$ PS1='[\u@\h \t \w]\$' \u 当前登录用户 \h 当前主机名 \t 当前系统时间 \w 输出绝对路径 \W 输出工作路径的最后一位 4.vim编辑器的用法 1. 编辑文件 当文件名称存在时,进入文件直接编辑 当名称不存在,vim会退出保存时自动建立文件 当vim命令后没有跟任何文件名称时,无法实现“:wq”退出保存时,可以用“wq filename” 2. 当vim异常退出时,系统会建立 .file.swp这个缓存文件 这个文件中保存着 没有“:wq”动作保存的信息 当用vim对文件做编辑的时候会提示 O #只读打开 E #直接忽略.file.swp信息编辑文件 R #利用.file.swp进行保存数据恢复 D #删除.file.swp Q #退出 A #终止 #vim的三种模式 命令模式 1.vim工作方式设定 命令模式是vim打开文件后默认进入的模式,这个模式不能插入字符

java知识基础篇(详细版)

自古美人都是妖i 提交于 2019-12-02 14:59:12
本文章为Java知识的基础篇,为Java知识点总结的前序部分。 1.java概述: 1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;1994年将Oak语言更名为Java; 2.Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发; JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础; JAVAME:Java Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序; 3.JDK: Java Development Kit,java的开发和运行环境,java的开发工具和jre。 4.JRE: Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。 5.配置环境变量: 是 java中 jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。 6.环境变量的配置: 1):永久配置方式:JAVA_HOME=%安装路径%\Java\jdk

Linux进程间通信 --- IPC机制(转)

余生颓废 提交于 2019-12-02 12:27:58
在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方法。在linux下有多种进程间通信的方法:半双工管道、命名管道、消息队列、信号、信号量、共享内存、内存映射文件,套接字等等。使用这些机制可以为linux下的网络服务器开发提供灵活而又坚固的框架。 1. 管道 (PIPE) 管道实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。 管道的特点: 1、管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 2、只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。比如fork或exec创建的新进程,在使用exec创建新进程时,需要将管道的文件描述符作为参数传递给exec创建的新进程。当父进程与使用fork创建的子进程直接通信时,发送数据的进程关闭读端,接受数据的进程关闭写端。 3、单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 4、数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾