内存参数

jdk8中的metaspace

被刻印的时光 ゝ 提交于 2020-03-10 20:07:39
概述 metaspace,顾名思义,元数据空间,专门用来存元数据的,它是jdk8里特有的数据结构用来替代perm,这块空间很有自己的特点,前段时间公司这块的问题太多了,主要是因为升级了中间件所致,看到大家讨论来讨论去,看得出很多人对metaspace还是模棱两可,不是很了解它,因此我觉得有必要写篇文章来介绍一下它,解开它神秘的面纱,当我们再次碰到它的相关问题的时候不会再感到束手无策。 通过这篇文章,你将可以了解到 为什么会有metaspace metaspace的组成 metaspace的VM参数 jstat里我们应该关注metaspace的哪些值 为什么会有metaspace metaspace的由来民间已有很多传说,不过我这里只谈我自己的理解,因为我不是oracle参与这块的开发者,所以对其真正的由来不怎么了解。 我们都知道jdk8之前有perm这一整块内存来存klass等信息,我们的参数里也必不可少地会配置-XX:PermSize以及-XX:MaxPermSize来控制这块内存的大小,jvm在启动的时候会根据这些配置来分配一块连续的内存块,但是随着动态类加载的情况越来越多,这块内存我们变得不太可控,到底设置多大合适是每个开发者要考虑的问题,如果设置太小了,系统运行过程中就容易出现内存溢出,设置大了又总感觉浪费,尽管不会实质分配这么大的物理内存。基于这么一个可能的原因

Java 入门之数组

被刻印的时光 ゝ 提交于 2020-03-10 13:13:44
一. 数组定义和访问 1.1 容器概述 案例分析:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有50名员工,用前面所学的知识,程序首先需要声明50个变量来分别记住每位员工的资,然后在进行操作,这样做会显得很麻烦,而且错误率也会很高。因此我们可以使用容器进行操作。将所有的数据全部存储到一个容器中,统一操作。 容器概念 容器: 是将多个数据存储到一起,每个数据称为该容器的元素。 生活中的容器: 水杯,衣柜,教室 1.2 数组概念 数组概念: 数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。 1.3 数组的定义 方式一,格式: 1 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度]; 数组定义格式详解: 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 [] : 表示数组。 数组名字:为定义的数组起个变量名,满足标识符规范,可以使用名字操作数组。 new :关键字,创建数组使用的关键字。 数组存储的数据类型: 创建的数组容器可以存储什么数据类型。 [ 长度]:数组的长度,表示数组容器中可以存储多少个元素。 注意:数组有定长特性,长度一旦指定,不可更改。和水杯道理相同,买了一个 2升的水杯,总容量就是2升,不能多也不能少。 举例:定义可以存储3个整数的数组容器,代码如下: 1 int[] arr = new

C++笔记(六)——I/O&异常

荒凉一梦 提交于 2020-03-10 05:16:32
iostream 标准库 提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。 · 标准库 fstream 定义了三个新的数据类型用于文件的访问。 · open() 函数 是 fstream、ifstream 和 ofstream 对象的一个成员。open() 成员函数的 第一参数指定要打开的文件的名称和位置,第二个参数定义文件被打开的模式 。可以把以上两种或两种以上的模式结合使用。 void open ( const char * filename , ios :: openmode mode ) ; //以写入模式打开文件,并希望截断文件,以防文件已存在 ofstream outfile ; outfile . open ( "file.dat" , ios :: out | ios :: trunc ) ; //打开一个文件用于读写 ifstream afile ; afile . open ( "file.dat" , ios :: out | ios :: in ) ; · close() 函数 用于关闭文件(通常应该在程序结束前关闭),close() 函数是 fstream、ifstream 和 ofstream 对象的一个成员。 void close ( ) ; ·使用流插入运算符( << )向文件写入信息,使用的是 ofstream 或

中文----pg的gpu加速扩展技术总结

不想你离开。 提交于 2020-03-09 18:21:18
文章目录 PG-Strom总结 要求配置 PG-Strom实现原理细节 1 NVME-Strom module EXPLAIN指令看query语句是否由GPU执行 CPU-GPU混合式并行: 如果啥,则并不会有更好的性能。 MPS daemon(多进程服务守护进程): 11 GPU Memory Store(gstore_fdw 12 PL/CUDA: 一旦PL/CUDA用CREATE FUNCTION声明一个函数 参考链接 PG-Strom总结 用GPU来加速SQL上的操作 其GPU代码生成器根据SQL语句生成 对应的在英伟达的CUDA(统一计算架构)的GPU程序 它的“SSD-to-GPU Direct SQL”机制 允许直接将数据从NVME的固态硬盘传到GPU 他的“PL/CUDA”和“gstore_fdw”允许运行高计算密度的问题。 要求配置 硬件服务器: 64位的能运行支持CUDA Toolkit(用来开发CUDA程序的工具)的Linux操作系统的x86硬件。 “SSD-to-GPU Direct SQL”需要支持NVMe规范的固态硬盘,且和GPU安装在同一个PCIe Root Complex下。 GPU设备:至少一个支持CUDA Toolkit的计算能力6.0的GPU 操作系统:由CUDA Toolkit支持的x86 64位Linux PostgreSQL:9

2. 影响mysql性能的因素

我的梦境 提交于 2020-03-08 17:32:57
影响mysql性能的几个方面: 1. 服务器硬件 2. 服务器操作系统 3. 数据库存储引擎 4. 数据库参数配置 5. 数据库结构设计和SQL语句 服务器硬件: 1. CPU: CPU密集型的应用,应选用频率更高的CPU而不是更多的CPU WEB类的应用,CPU核心数量比频率重要 2. 内存: 内存越多越好,内存对读、写都有作用 内存频率越高速度越快,应选择主板支持的最大内存频率,单条容量尽可能大 3. 磁盘: 传统机器硬盘:1.存储容量 2.传输速度 3.访问时间 4.主轴转速 5.物理尺寸 RAID(磁盘冗余阵列): 1.RAID 0,2块以上的硬盘组成,没有冗余和错误修复能力 2.RAID 1,磁盘镜像,2块硬盘组成,有冗余 3.RAID 5,分布式奇偶性校验阵列,3块以上的硬盘组成,任意一个盘数据失效时可以重建,更多盘数据失效时无法重建 4.RAID 10,分片镜像,RAID 0和RAID 1组合,4块以上的硬盘组成,对比RAID 5重建更简单,速度更快 固态存储SSD或PCI-E卡: 比机械硬盘有更好的随机读写性能 比机械硬盘能更好的支持并发 比机械硬盘更容易损坏 适用于存在大量随机I/O的场景 适用于解决单线程负载的I/O瓶颈 网络存储SAN和NAS: SAN的随机读写慢,不如本地RAID磁盘 NAS设备使用网络连接,通过基于文件的协议如NFS或SMB来访问

mysql两个重要的日志redolog和binlog

泪湿孤枕 提交于 2020-03-08 16:45:38
一.redo log 使用原因 在 MySQL 里有这个问题,如果每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高 其实就是 MySQL 里经常说到的 WAL 技术,WAL 的全称 是 Write-Ahead Logging,它的关键点就是先写日志,再写磁盘 当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内存,这个时候更新就算完成了。同时,InnoDB 引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做 原理 InnoDB 的 redo log 是固定大小的,比如可以配置为一组 4 个文件,每个文 件的大小是 1GB,那么这块“粉板”总共就可以记录 4GB 的操作。从头开始写,写到末 尾就又回到开头循环写,如上面这个图所示。 write pos 是当前记录的位置,一边写一边后移,写到第 3 号文件末尾后就回到 0 号文件 开头。checkpoint 是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录 更新到数据文件。 write pos 和 checkpoint 之间的是“粉板”上还空着的部分,可以用来记录新的操作。如 果 write pos 追上 checkpoint,表示“粉板”满了,这时候不能再执行新的更新,得停下

Python__高级

孤街浪徒 提交于 2020-03-07 09:27:32
一.元类 1.Python 中类方法、类实例方法、静态方法有何区别? 类方法 :是类对象的方法,在定义时需要在上方使用“@classmethod”进行装饰,形参为 cls,表示类对象,类对象和实例对象都可调用; 类实例方法 :是类实例化对象的方法,只有实例对象可以调用,形参为 self,指代对象本身; 静态方法 :是一个任意函数,在其上方使用“@staticmethod”进行装饰,可以用对象直接调用,静态方法实际上跟该类没有太大关系。 2.Python 中如何动态获取和设置对象的属性? if hasattr(Parent,'x'): print(getattr(Parent,'x')) setattr(Parent,'x',3) print(getattr(Parent,'x')) 二.内存管理与垃圾回收机制 1. Python 的内存管理机制及调优手段? 内存管理机制:引用计数、垃圾回收、内存池。 引用计数:引用计数是一种非常高效的内存管理手段, 当一个 Python 对象被引用时其引用计数增加 1, 当 其不再被一个变量引用时则计数减 1. 当引用计数等于 0 时对象被删除。 1. 引用计数 引用计数也是一种垃圾收集机制,而且也是一种最直观,最简单的垃圾收集技术。当 Python 的某 个对象的引用计数降为 0 时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾了。比

Java内存划分--数组内存图

我是研究僧i 提交于 2020-03-07 03:28:44
Java内存划分 5 一,栈: 存放的都是方法中的 局部变量,方法的运行一定要在栈当中。 局部变量:方法的参数,方法{}中的变量 作用域:一旦超出作用域,立刻从栈内存中消失。 二,堆: 凡是 new 出来的东西,都在堆当中 堆内存里面的东西都有一个地址值:16进制 堆里面的数据都有默认值: ​ 整数 默认为0 ​ 浮点数 默认为0.0 ​ 字符 默认为 ‘\u0000’ ​ 布尔 默认为false ​ 引用类型 默认为null 三,方法区: 存储 .class 相关信息,包含方法的信息 四,本地方法栈 与操作系统相关 五,寄存器: 与 cpu 相关 一个数组的内存图 方法信息 存储在 方法区中 运行方法就必须将 方法信息 加载到栈中,并在栈中开辟空间,存储数组名 new的时候 是在堆里面,在堆中开辟一段内存空间,编号,赋予16进制地址值。 将地址值赋给栈里面的数组名。 根据索引赋值的时候,通过数组名的地址,在堆中找到相应内存地址,按照索引递增,找到相应地址 两个数组的内存图 类比一个数组,我都懒得写了… 还是要注意压栈的问题 画这个图,实际上是为下面做铺垫 两个引用指向同一个数组 其实图里面已经可以很清楚的看到,虽然 B数组是被 A数组赋值了,但是,B数组依然能够指向内存中new出来的数组地址, 由此,不难看出,通过 数组B 一样能够改变 堆内存中的数组 实际上,是堆内存共享了

接近金三银四?不要慌,先刷完这几百道面试题

懵懂的女人 提交于 2020-03-04 22:09:14
快到金三银四了,很多小伙伴还没有复工,在家呆的有点慌,不知道之后会面临的裁员还是被裁员。在这里我给大家收集了很多面试题,刷完这些面试题,金三银四丝毫不用慌了 AndroidBAT面试专题PDF+学习笔记+相对应的视频教程(见末尾) 一丶Android常问基础面试点 1.四大组件的生命周期和简单用法 1) Activity : onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestory() onCreate() :为 Activity 设置布局,此时界面还不可见; onStart() : Activity 可见但还不能与用户交互,不能获得焦点 onRestart() : 重新启动 Activity 时被回调 onResume() : Activity 可见且可与用户进行交互 onPause() : 当前 Activity 暂停,不可与用户交互,但还可见。在新 Activity 启动前被系统调用保存现有的 Activity 中的持久数据、停止动画等。 onStop() : 当 Activity 被新的 Activity 覆盖不可见时被系统调用 onDestory() : 当 Activity 被系统销毁杀掉或是由于内存不足时调用 2) Service a) onBind 方式绑定的:

SEVERE:Memory usage is low, parachute is non existent, your system may start failing.

天大地大妈咪最大 提交于 2020-03-04 19:50:12
tomcat项目启动后就报错: SEVERE:Memory usage is low, parachute is non existent, your system may start failing. 内存不足。 catalina.bat加入如下内容后问题解决: echo 以下为jvm内存设置,在生产环境中,可以将xms参数设置成与xmx参数值一致 SET JAVA_OPTS=%JAVA_OPTS% -Xms6048M -Xmx6048M -XX:PermSize=4012M -XX:PermSize=4012M -XX:MaxNewSize=1024M -XX:MaxPermSize=1024M 来源: CSDN 作者: fr33m4n 链接: https://blog.csdn.net/tunpishuang/article/details/104653731