5.2一些案例:

1.高性能硬件部署策略:

(1)背景:某公司升级了硬件(CPU升级为4核,内存增加为16G),发现不定期出现网页失去响应。

(2)原因:①内存增加之后,项目中有在内存中处理文件的大对象,从而进入的老年代而没有进行及时回收,然后每次Full GC都要回收比较大量的对象;②Full GC的“Stop-The-World”;

(3)处理方法:

  ①使用64位jdk,减少Full GC的次数,可以定时在深夜进行Full GC或者重启服务器,缺点:内存回收时间停顿很长,64位JDK比32位的性能低,转储堆内存快照过大不利于分析,更占内存(指针膨胀、对齐补充);

  ②使用32位jdk,在服务器上搭建多个Web集群,使用反向代理进行负载均衡,缺点:对全局资源的争抢(比如磁盘,容易IO异常),内存受32位影响一个虚拟机最多只能分配2GB,每个虚拟机的缓存对内存的浪费(可以集中式缓存);

2.堆外内存导致的内存溢出:

(1)Direct Memory:直接内存区的溢出,比如NIO要使用这个区域的内存;

(2)栈:栈的内存不足会导致无法分配线程;

(3)Socket缓存:每个Socket连接都会占内存,连接太多就会出现内存不足;

(4)JNI(Java Native Inteface):本地方法占用的堆外内存;

(5)虚拟机本身和GC:虚拟机本身也占用内存;

3.外部命令占用资源过多;

4.JVM进程崩溃:

  (1)过多请求异步调用接口,请求积累过多而导致了虚拟机无法承受而崩溃;

  (2)使用生产者/消费者的消息队列模式解决;

5.不恰当数据结构导致的内存占用过大:

  数据本身所占大小与总大小比值太低,存储效率低,也就导致了GC的效率低

深入理解JVM(五)JVM优化策略的更多相关文章

  1. 一步步优化JVM五:优化延迟或者响应时间(1)

    http://blog.csdn.net/zhoutao198712/article/details/7791969      本节的目标是做一些优化以满足对应用对延迟的需求.这次需要几个步骤,包括完 ...

  2. 一步步优化JVM五:优化延迟或者响应时间

    本节的目标是做一些优化以满足对应用对延迟的需求.这次需要几个步骤,包括完善Java堆大小的配置,评估垃圾回收占用的时间和频率,也许还要尝试切换到不同的垃圾回收器,以及由于使用了不同的垃圾回收器,需要重 ...

  3. 47、Spark SQL核心源码深度剖析(DataFrame lazy特性、Optimizer优化策略等)

    一.源码分析 1. ###入口org.apache.spark.sql/SQLContext.scala sql()方法: /** * 使用Spark执行一条SQL查询语句,将结果作为DataFram ...

  4. JVM(1)---虚拟机在运行期的优化策略

    1.解释器与JIT编译器 首先我们先来了解一下运行在虚拟机之上的解释器与JIT编译器.当我们的虚拟机在运行一个java程序的时候,它可以采用两种方式来运行这个java程序: 采用解释器的形式,也就是说 ...

  5. 深入理解java虚拟机JVM(上)

    深入理解java虚拟机JVM(上) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

  6. java jvm内存管理/gc策略/参数设置

    1. JVM内存管理:深入垃圾收集器与内存分配策略 http://www.iteye.com/topic/802638 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想 ...

  7. JVM(五):探究类加载过程-上

    JVM(五):探究类加载过程-上 本文我们来研究一个Java字节码文件(Class文件)是如何加载入内存中的,在這個过程中涉及类加载过程中的加载,验证,准备,解析(连接),初始化,使用,销毁过程,并探 ...

  8. 大厂面试经:说一下你们线上JVM是如何优化的?

    JVM(Java虚拟机)简单来说就是运行Java代码的解释器,作为螺丝钉程序员JVM其实了解下就差不多啦,不懂JVM内部细节照样能写出优质的代码!但是一到造火箭.飞机的场景(面试)不懂JVM的你,会被 ...

  9. 深入理解java虚拟机JVM(下)

    深入理解java虚拟机JVM(下) 链接:https://pan.baidu.com/s/1c6pZjLeMQqc9t-OXvUM66w 提取码:uwak 复制这段内容后打开百度网盘手机App,操作更 ...

随机推荐

  1. C#编程经验-enum and struct

    enum,store fixed values,use array replace,not use this data-structurestruct,store several variables, ...

  2. 一个简单的makefile文件

    一个简单的makefile文件:可以编译指定目录下的所有c和cpp文件,暂未加入自动头文件的依赖. #!/bin/bash #编译器 CROSS_COMPILING_PATH = #源文件路径 VPA ...

  3. jenkins 可以设置最多执行并发执行多少个

    系统-系统配置

  4. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  5. [UE4]Button

    一.按钮有4种状态:Normal(普通状态).Hovered(鼠标悬停状态).Pressed(鼠标按下状态).Disabled(禁用状态),可以分别给每种状态设置样式. 二.按钮有如图所示的5个事件, ...

  6. postgresql模糊查询json类型字段内某一属性值

    需求场景: 目录以jsonb格式存储在数据库表t的chapter字段中,需要菜单路径中包含指定字符串(比如“语文”或者“上学期”)的menu 以下为chapter字段存储json示例: { " ...

  7. Servlet 教程 各个知识点简单概括

    Servlet 教程 http://www.ziqiangxuetang.com/servlet/servlet-cookies-handling.html Servlet 教程 Servlet 教程 ...

  8. Servlet工作原理解析

    Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 S ...

  9. gentoo 图像方面的软件

    图像方面的软件一般包括:查看图像,屏幕截图,图像修改. 查看图像简单的可以安装 feh,但是 feh 一般作为墙纸来用.稍微好一些的是 gqview. 屏幕截图可以用 screengrab,使用的时候 ...

  10. Linux 关机、重启 命令

    重启命令:1.reboot2.shutdown -r now 立刻重启(root用户使用)3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.shutdown -r 20:3 ...