内存参数

JVM 运行参数 & 代码监控

六月ゝ 毕业季﹏ 提交于 2019-12-04 22:01:02
1、Java代码监控 JDK提供java.lang.management包, 其实就是基于JMX技术规范,提供一套完整的MBean,动态获取JVM的运行时数据,达到监控JVM性能的目的。 package com.agan.jvm; import java.lang.management.*; import java.util.Arrays; import java.util.List; public class JVMDemo { public static void main(String[] args) { System.out.println("----------Memory--------"); MemoryMXBean memoryMXBean = ManagementFactory.getMemoryMXBean(); MemoryUsage usage = memoryMXBean.getHeapMemoryUsage(); System.out.println("初始化Heap:" + usage.getInit()/1024/1024 + "mb"); System.out.println("最大Heap:" + usage.getMax()/1024/1024 + "mb"); System.out.println("已使用Heap:" + usage

sizeof

断了今生、忘了曾经 提交于 2019-12-04 18:45:21
本文转载百度百科。 编辑本段 用法   var a : array[1..10000] of longint;    Begin   Writeln(SizeOf(a));   End.   输出:40000   如果定义Integer,则输出:20000    c语言 中判断数据类型长度符   用法   sizeof(类型说明符, 数组 名或表达式);   或   sizeof 变量名   1. 定义:   sizeof是C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。   MSDN上的解释为:   The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.   其返回值类型为size_t,在头文件 stddef.h 中定义。这是一个依赖于编译系统的值,一般定义为   typedef unsigned int size_t;   世上 编译器 林林总总,但作为一个规范,它们都会保证char、signed char和unsigned  

eclipse.ini配置文件

北城余情 提交于 2019-12-04 18:38:49
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编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 堆内存分配 JVM初始分配的内存由-Xms指定

java JVM虚拟机选项 Xms Xmx PermSize MaxPermSize 的区别

寵の児 提交于 2019-12-04 18:38:33
Eclipse崩溃,错误提示: MyEclipse has detected that less than 5% of the 64MB of Perm Gen (Non-heap memory) space remains. It is strongly recommended that you exit and restart MyEclipse with new virtual machine memory paramters to increase this memory. Failure to do so can result in data loss. The recommended Eclipse memory parameters are: eclipse.exe -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 1.参数的含义 -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了 -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的非堆内存 -XX

JavaScript的数据类型

徘徊边缘 提交于 2019-12-04 17:42:13
  整理以前的面试题,发现问js数据类型的频率挺高的,回忆当初自己的答案,就是简简单单的把几个类型名称罗列了出来,便没有了任何下文。其实这一个知识点下可以牵涉发散出很多的知识点,如果一个面试者只是罗列的那些名词出来,可能面试官都不愿意继续问下去了,这该算是js基础的基础了。如果这个问题没有很好的回答,其他问题仍旧没有突出的亮点,很可能就过不了。   在网上看了一个体系,可作为大致的学习检阅自己的途径,按照清单上的知识检测自己还有哪些不足和提升,最后形成自己的知识体系。在工作、学习甚至面试时,可以快速定位到知识点。 1. JavaScript规定了几种语言类型 2. JavaScript对象的底层数据结构是什么 3. Symbol类型在实际开发中的应用、可手动实现一个简单的 Symbol 4. JavaScript中的变量在内存中的具体存储形式 5. 基本类型对应的内置对象,以及他们之间的装箱拆箱操作 6. 理解值类型和引用类型 7. null和 undefined的区别 8. 至少可以说出三种判断 JavaScript数据类型的方式,以及他们的优缺点,如何准确的判断数组类型 9. 可能发生隐式类型转换的场景以及转换原则,应如何避免或巧妙应用 10. 出现小数精度丢失的原因, JavaScript可以存储的最大数字、最大安全数字, JavaScript处理大数字的方法

Java程序线上故障排查

↘锁芯ラ 提交于 2019-12-04 13:59:41
目录 一、Linux 内存和cpu 网络 磁盘 /proc文件系统 二、JVM Java堆和垃圾收集器 gc日志分析 JVMTI介绍 Attach机制 java自带工具 三、三方工具 jprofile arthas (类似btrace的工具) gceasy 四、实际案例 连接泄漏 String拼接导致内存溢出 堆内存占用过大 CPU占用高问题 aerospike线程阻塞导致内存溢出问题 问题 这篇文章是在公司做了不少的线上Java服务故障排查和优化之后的一个总结,可以作为一个工具清单,在分析问题的时候需要有整体思路:全局观,先从系统层面入手,大致定位方向(内存,cpu,磁盘,网络),然后再去分析具体的进程。 一、Linux 内存和cpu 内存和cpu问题是出问题最多的一个点,因为有些命令如top同时可以观察到内存和cpu所以放在一起。 top命令 常用参数: -H 打印具体的线程, -p 打印某个进程 进入后 按数字1 可以切换cpu的图形看有几个核 下面是我的测试环境shell: top - 14:28:49 up 7 min, 3 users, load average: 0.08, 0.26, 0.19 Tasks: 221 total, 2 running, 219 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.1 us, 3.4 sy,

JVM性能调优详解

只谈情不闲聊 提交于 2019-12-04 13:11:59
JVM性能调优详解 https://www.cnblogs.com/secbro/p/11833651.html应该是 jdk8 以前的方法 貌似permsize 已经放弃这一块了. 前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能调优做准备。这篇文章带领大家学习JVM性能调优的知识。 性能调优 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。 性能调优基本上按照以下步骤进行:明确优化目标、发现性能瓶颈、性能调优、通过监控及数据统计工具获得数据、确认是否达到目标。 何时进行JVM调优 遇到以下情况,就需要考虑进行JVM调优了: Heap内存(老年代)持续上涨达到设置的最大内存值; Full GC 次数频繁; GC 停顿时间过长(超过1秒); 应用出现OutOfMemory 等内存异常; 应用中有使用本地缓存且占用大量内存空间; 系统吞吐量与响应性能不高或下降。 JVM调优的基本原则 JVM调优是一个手段,但并不一定所有问题都可以通过JVM进行调优解决,因此,在进行JVM调优时,我们要遵循一些原则: 大多数的Java应用不需要进行JVM优化; 大多数导致GC问题的原因是代码层面的问题导致的(代码层面); 上线之前

docker 命令大全

杀马特。学长 韩版系。学妹 提交于 2019-12-04 11:56:10
1. 镜像仓库 1.1 docker search [OPTIONS] TERM // 搜索镜像 选项 说明 示例 -f, --filter filter 根据条件筛选 --filter=is-automated=true // 只列出 automated build类型的镜像 --filter=stars=10 // 列出收藏数不小于指定值的镜像 --limit int 设置搜索结果的记录数量 --no-trunc 搜索结果完整显示 1.2 docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 从镜像参数中拉取指定镜像 选项 说明 示例 -a 拉取所有tagged镜像 --disable-content-trust 忽略镜像的校验,默认为true 1.3 docker push [OPTIONS] NAME[:TAG] // 上传镜像到仓库(要先登录仓库) 选项 说明 示例 --disable-content-trust 忽略镜像校验 1.4 docker login -u 用户名 -p 密码 //登录 1.5 docker logout // 登出 2. 容器操作 2.1 docker ps [OPTIONS] //列出容器 选项 说明 示例 -a 显示所有容器,默认只显示正在运行的 -f 过滤 docker ps -f name=hello

mysql 5.6配置

﹥>﹥吖頭↗ 提交于 2019-12-04 11:06:32
简洁版: [client] port = 3306 socket = /weyeedata/mysql/run/mysql.sock [mysqld] innodb_buffer_pool_size = 512M #log_bin = 1 expire_logs_days = 7 basedir = /usr/local/mysql datadir = /weyeedata/mysql/data port = 3306 bind = 0.0.0.0 server_id = 1 socket = /weyeedata/mysql/run/mysql.sock innodb_file_per_table = 1 skip_name_resolve = 1 #binlog_format = row log_error = /weyeedata/mysql/logs/mysql-error.log slow_query_log = 1 long_query_time = 1 slow_query_log_file = /weyeedata/mysql/logs/mysql-slow.log join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M max_connections = 10000 sql

PostgreSQL 参数调整(性能优化)

别说谁变了你拦得住时间么 提交于 2019-12-04 10:26:08
昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利。但是在无外网环境下就是两个不同的概念了,可谓十有八折。感兴趣的同学可以搭建一下。 PostgreSQL安装完成后第一件事便是做相关测试,然后调整参数。 /*CPU 查看CPU型号*/ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c /*查看物理CPU个数*/ cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l /*查看逻辑CPU个数*/ cat /proc/cpuinfo | grep "processor" | wc -l /*查看CPU内核数*/ cat /proc/cpuinfo | grep "cpu cores" | uniq /*查看单个物理CPU封装的逻辑CPU数量*/ cat /proc/cpuinfo | grep "siblings" | uniq /*计算是否开启超线程 ##逻辑CPU > 物理CPU x CPU核数 #开启超线程 ##逻辑CPU = 物理CPU x CPU核数 #没有开启超线程或不支持超线程*/ /*查看是否超线程,如果cpu cores数量和siblings数量一致,则没有启用超线程,否则超线程被启用。*/ cat /proc