我们通常处理OutOfMemoryError问题,因为堆或permgen大小配置问题。

但是所有的JVM内存不是permgen或者heap。

据我所知,它也可以与Threads / Stacks,本地JVM代码相关…

但是使用pmap我可以看到进程分配了9.3G这是3.3G堆外内存使用。

我不知道什么是监视和调整这种额外的堆外内存消耗的可能性。

我不使用直接的离堆内存访问(MaxDirectMemorySize是64m默认)

Context: Load testing

Application: Solr/Lucene server

OS: Ubuntu

Thread count: 700

Virtualization: vSphere (run by us, no external hosting)

JVM

java version "1.7.0_09"

Java(TM) SE Runtime Environment (build 1.7.0_09-b05)

Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Tunning

-Xms=6g

-Xms=6g

-XX:MaxPermSize=128m

-XX:-UseGCOverheadLimit

-XX:+UseConcMarkSweepGC

-XX:+UseParNewGC

-XX:+CMSClassUnloadingEnabled

-XX:+OptimizeStringConcat

-XX:+UseCompressedStrings

-XX:+UseStringCache

内存映射:

vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

1 0 1743 381 4 1150 1 1 60 92 2 0 1 0 99 0

自由

total used free shared buffers cached

Mem: 7986 7605 381 0 4 1150

-/+ buffers/cache: 6449 1536

Swap: 4091 1743 2348

最佳

top - 11:15:49 up 42 days, 1:34, 2 users, load average: 1.44, 2.11, 2.46

Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.5%us, 0.2%sy, 0.0%ni, 98.9%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 8178412k total, 7773356k used, 405056k free, 4200k buffers

Swap: 4190204k total, 1796368k used, 2393836k free, 1179380k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

17833 jmxtrans 20 0 2458m 145m 2488 S 1 1.8 206:56.06 java

1237 logstash 20 0 2503m 142m 2468 S 1 1.8 354:23.19 java

11348 tomcat 20 0 9184m 5.6g 2808 S 1 71.3 642:25.41 java

1 root 20 0 24324 1188 656 S 0 0.0 0:01.52 init

2 root 20 0 0 0 0 S 0 0.0 0:00.26 kthreadd

...

df – > tmpfs

Filesystem 1K-blocks Used Available Use% Mounted on

tmpfs 1635684 272 1635412 1% /run

我们的主要问题:

>服务器有8G的物理内存

> Solr的堆只有6G

>有1.5G的交换

> Swappiness = 0

>堆消耗似乎适当调整

>在服务器上运行:只有Solr和一些监视的东西

>我们有一个正确的平均响应时间

>我们有时会有长时间停顿,长达20秒

我想暂停可能是一个完整的GC上交换堆右?

为什么有这么多的互换?

我甚至不知道这是否是使服务器交换的JVM,或者如果它是隐藏的,我看不到的东西。也许操作系统页面缓存?但不知道为什么操作系统将创建页面缓存条目,如果创建交换。

我正在考虑测试mlockall技巧用于一些流行的基于Java的存储/ NoSQL像ElasticSearch,Voldemort或Cassandra:check Make JVM/Solr not swap, using mlockall

编辑:

在这里你可以看到最大堆,使用堆(蓝色),使用的交换(红色)。它似乎是相关的。

我可以看到与Graphite有很多ParNew GC定期发生。而且有一些CMS GC对应于堆图像的显着减少。

暂停似乎不与堆减少相关,但是在10:00和11:30之间有规律地分布,因此它可能与ParNew GC有关。

在负载测试期间,我可以看到一些光盘活动以及一些交换IO活动,这是真的平静的,当测试结束。

java非堆内存_java – 监视JVM的非堆内存使用情况相关推荐

  1. java 数据保存内存_java中的各种数据类型在内存中存储的方式 一

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  2. 【Java】Volitile的作用、JVM规范如何要求内存屏障、硬件层级内存屏障如何帮助java实现高并发 - 第二天笔记

    第二天笔记 Volitile的使用 保持线程可见性 禁止指令重排:单线程中,两条指令的执行前后顺序不会影响执行结果,CPU流水线会优化执行顺序 如果存在乱序,则不可能出现x=0,y=0的结果 运行结果 ...

  3. 如何实现java虚拟机的优化_Java虚拟机JVM优化实战的过程全记录

    前言 Java虚拟机是运行所有Java程序的抽象计算机,是Java语言的运行环境,它是Java 最具吸引力的特性之一.Java虚拟机是通过在实际的计算机上仿真模拟各种计算机功能模拟来实现的,通过Jav ...

  4. java非阻塞锁_Java并发问题的非阻塞解决方案

    转自http://blog.csdn.net/u011277203/article/details/9223545 在并发环境中,对于共享资源通常会采用显式的锁机制(比如synchronized或Re ...

  5. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择

    JAVA虚拟机JVM优化重要性,昨天JAVA虚拟机JVM参数优化(1)文章中已经描述,今天我们来讨论JAVA虚拟机在不同性能要求下如何选择三种垃圾收集算法. JVM内部结构如下图所示: 串行收集用于单 ...

  6. java虚拟机 函数表_java虚拟机 jvm 局部变量表实战

    java局部变量表是栈帧重要组中部分之一.他主要保存函数的参数以及局部的变量信息.局部变量表中的变量作用域是当前调用的函数.函数调用结束后,随着函数栈帧的销毁.局部变量表也会随之销毁,释放空间. 由于 ...

  7. java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...

    今天翻记录看到了自己15年3月份提的问题,现在已经18年6月份了: 去年线上项目出现内存瓶颈,原因是缓存的玩家角色数据过多,在长时间不停服的情况下,导致数据越来越膨胀,之前没有清除无用缓存的机制,并且 ...

  8. java 链接重排序_JAVA中JVM的重排序详细介绍

    重排序通常是编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序执行的一种手段.重排序分为两类:编译期重排序和运行期重排序,分别对应编译时和运行时环境 在并发程序中,程序员会特别关注不同进程或 ...

  9. java 字符串 内存_java – 字符串文字和永久生成内存区域

    当我们说实际的字符串存储在永久生成区域中时,同样适用于字符串文字?或者只是被inter()所拘留的字符串? 实际上,博客文章通常表示,字符串池包含对字符串对象的引用,而实际的字符串对象是堆中的某个位置 ...

最新文章

  1. 机器学习(12)欠拟合过拟合、模型分析与正则化
  2. Lucene第一篇【介绍Lucene、快速入门】
  3. git 生成patch和使用patch
  4. 浅析软件项目管理中十个误区(来自:http://manager.csdn.net/n/20051213/30907.html)
  5. float在python中的书写形式错误的是_python – 不支持的操作数类型:’float’和’str’错误...
  6. 2017.11.24 Stm8L151-factory
  7. 虚拟机开机时出现Press ESC in 5 seconds to skip startup.nsh, any other key to continue问题的解决办法
  8. JAVA共通関数--シングルクォーテーションをSQL用に追加する
  9. [网络应用]winrar主题之Vista Ultimate篇
  10. android MediaPlayer m3u8 播放
  11. 在线制作流程图、思维导图(基于ProcessOn平台)
  12. onenote android同步,移动版OneNote更新 自动同步支持Office365
  13. npm install报错214 verbose node v14.15.0 215 verbose npm v7.23.0
  14. 计算机win10无法打开小键盘,小编告诉你win10开机小键盘不自动开启的解决伎俩...
  15. 刚刚!腾讯荣升Linux基金会白金会员
  16. 贝叶斯法则求垄断者阻挠概率的动态博弈问题
  17. 鸿蒙一体机使用方法,教学一体机的使用方法
  18. AI绘画网站最全收集!!
  19. android可看电视吗,不要VIP也能看电影,安卓手机这4款APP太赞了!
  20. 用词袋(bag of word)实现场景识别

热门文章

  1. 巧用“傍术”选择陈列点
  2. mysql树节点【所有子节点列表 and 查询所有父节点列表】
  3. css之文本溢出处理 | 背景图片处理
  4. Java学习资料汇总(JavaSE+JavaEE+数据库+框架+笔试题+面试题)
  5. 用户画像标签维度_一文看懂用户画像标签体系(包括维度、应用场景)
  6. excel函数怎么用android,在Android中阅读Excel
  7. nginx.conf文件内容详解
  8. input=file 浏览时只显示指定excel文件,筛选特定文件类型
  9. springboot, thymeleaf 教你快速搭建网站
  10. 现代计算机应用特点,现代计算机的特点和计算机的发展