-
【基础+实战】JVM原理及优化系列之七:JVM调优注意事项
1. JVM 调优策略 1.运行模式 2.内存分配优化 3.GC 调优 4.线程调优生产环境 2. JVM配置原则 1.编译器:启动服务器编译器,可以提高效率。 2.口志输出:开启口志输出,用于跟踪 GC 信息,方便后续进一步优化配置 3.堆大小:堆最大值按需分配,堆最小值设置为与堆最大值相同 4.选择合适的垃圾回收器:响应优先的应用首选 CMS 垃圾回收器、高吞吐大型计算应用首选并…- 7
- 0
-
JVM性能优化 Part V:Java的伸缩性
JVM性能优化 Part V:Java的伸缩性 很多程序员在解决 JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题。我说过 JVM的自身技术限制了 Java企业级应用的伸缩性。首先我们先列举一些主导因素。 主流的硬件服务器提供了大量的内存 分布式系统有大量内存的需求,而…- 4
- 0
-
深入理解jvm–性能监控工具
1.jvm监控工具介绍 1.1.jconsole JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,不过此JVM需要使用可管理的模式启动。 1.2.启动jconsole 通过JDK/bin目录下的“jconsole.exe”启动Jconsole后,将自动搜索出本机运行的所有虚拟机进程,双击其中一个进程即可开始监控。 也可以“远程连接服务器,进行远程虚拟机的监控。 补充:根据端…- 3
- 0
-
Java性能调优(二):IO和内存分析
文件IO消耗分析 Linux在操作文件的时候,先将文件放入文件缓存,直到内存不足或者进程使用。这是一种提升IO速度的方式。 1.pidstat KB_rd/s表示每秒读,KB_wr/s每秒写 2.iostat 查看历史IO 网络IO分析 使用命令 sar -n FULL 1 2 内存消耗分析 JVM内存消耗过多会导致GC喜欢 ii 次难过频繁,CPU消耗增加,应用…- 10
- 0
-
Java性能优化的50个细节
在JAVA程序中, 性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。 1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的 时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过 线程同步来控制资源的 并发访问; 第二,控制 实例的产生,以达到节约资源的目的…- 8
- 0
-
Netty源码分析第7章(编码器和写数据)—->第3节: 写buffer队列
Netty源码分析第7章(编码器和写数据)---->第3节: 写buffer队列 Netty源码分析七章: 编码器和写数据 第三节: 写buffer队列 之前的小节我们介绍过, writeAndFlush方法其实最终会调用write和flush方法 write方法最终会传递到head节点, 调用HeadContext的write方法: 1public void write(C…- 2
- 0
-
Netty源码分析第3章(客户端接入流程)—->第1节: 初始化NioSockectChannelConfig
Netty源码分析第三章: 客户端接入流程 概述: 之前的章节学习了server启动以及eventLoop相关的逻辑, eventLoop轮询到客户端接入事件之后是如何处理的?这一章我们循序渐进, 带大家继续剖析客户端接入之后的相关逻辑 第一节:初始化NioSockectChannelConfig 在剖析接入流程之前我们首先补充下第一章有关创建channel的知…- 0
- 0
-
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)—->第6节: 异线程回收对象…
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第6节: 异线程回收对象 Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第六节: 异线程回收对象 异线程回收对象, 就是创建对象和回收对象不在同一条线程的情况下, 对象回收的逻辑 我们之前小节简单介绍过, 异线程回收对象, 是不会放在当前线…- 2
- 0
-
Java NIO框架Netty教程(五)-Netty中OIO模型(对比NIO)
一篇OIO和NIO对比的小研究。Netty中不光支持了Java中NIO模型,同时也提供了对OIO模型的支持。(New IO vs Old IO)。 首先,在Netty中,切换OIO和NIO两种模式是非常方便的,只需要初始化不同的Channel工程即可。 1ServerBootstrap bootstrap =new ServerBootstrap( 2 newOioServerSocketChan…- 13
- 0
-
详解JVM内存管理与垃圾回收机制5 – Java中的4种引用类型
在Java语言中,除了基础数据类型的变量以外,其他的都是引用类型,指向各种不同的对象。在前文我们也已经知道,Java中的引用可以是认为对指针的封装,这个指针中存储的值代表的是另外一块内存的起始地址(对象所在内存的首地址)。在这种定义下,一个对象只有被引用和没有被引用两种状态,当对象没有被引用的时候,即被JVM回收,但这种设计并不能满足所有的应用场景,比如,缓存:在内存还足够时,希望这些对象一直保持…- 47
- 0
-
排序算法算法之Insertion Sort
引言 感觉1年前写的这篇文章有些不全面,因此今天我想完善一下这篇文章。 插入排序的几大优势 毋庸置疑,Insertion Sort 与其它几个高级排序算法(quicksort, heapsort, merge sort)相比,效率要低得多。但是,它也有自己的几大优势: 实现简单 对于小数据集很有效 在实际应用中,它要比其它的一些 $O(n^2)$ 算法(比如:bubble sort)更有效 Ada…- 8
- 0
-
JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制
JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 一.静态同步函数的锁是class对象 我们在上节验证了同步函数的锁是this,但是对于静态同步函数,你又知道多少呢? 我们做一个这样的小实验,我们给show方法加上static关键字去修饰 1private static synchronized void sh…- 2
- 0
-
c++ 强制类型转换
在C++语言中,如果类从包含虚函数的基类派生,则指向基类类型的指针可用于调用派生类对象中包含的虚函数的实现。 包含虚函数的类有时被称为“多态类”。 由于派生类完全包含它派生自的所有基类的定义,因此在类层次结构上将指针转换至这些基类中的任何一个是安全的。 提供一个指向基类的指针,在层次结构中向下转换指针可能是安全的。 如果将指向的对象实际上是从基类派生的类型,则是安全的。 在这种情况下,实际对象称为…- 1
- 0
-
一步步优化JVM<五>:优化延迟或者响应时间(1)
本节的目标是做一些优化以满足对应用对延迟的需求。这次需要几个步骤,包括完善Java堆大小的配置,评估垃圾回收占用的时间和频率,也许还要尝试切换到不同的垃圾回收器,以及由于使用了不同的垃圾回收器,需要重新优化Java堆空间大小。 这一步有如下可能的结果: 1、应用的延迟需求被满足了。如果这一步的优化操作满足了应用的延迟需求,你可以继续下一步优化(优化吞吐量)。 2、应…- 3
- 0
-
【基础+实战】JVM原理及优化系列之六:JVM主要调优参数
为了方便JVM优化,下面将JVM参数根据分类做了总结,JVM调优可以从如下参数着手: 该专题是一个系列,参照了一系列JVM资料,对JVM基础知识做了摘要总结,并结合实战做了总结: 【基础+实战】JVM原理及优化系列之一:JVM体系结构 【基础+实战】JVM原理及优化系列之二:JVM内存管理 【基础+实战】JVM原理及优化系列之三:JVM垃圾收集器 【基础+实战】JVM原理及优化系列之四:JVM…- 3
- 0
-
oracle的数据更新、数据伪列、事务处理
1、数据更新 如果要修改表之前的数据,则可以采用如下的语法完成: Update 表名称 set 字段=值,字段=值,...[where 更新条件(s)]; 如果在编写update语句的时候,没有编写任何的更新条件,则可以表示更新表中的全部数据。 范例:要求将smith的工资修改为5500,佣金修改为5000; Update myemp set sal = 5500,comm=5000 where …- 12
- 0
-
Java代码性能分析工具
1、Java程序性能分析 1>Jconsole:JDK自带 2> VisualVM :加强性能分析工具 参考资料:http://jiajun.iteye.com/blog/810150 2、Android程序性能分析 1> traceView:Android自带 参考资料: http://blog.csdn.net/iris0123456/article/details/754…- 2
- 0
-
Netty源码分析第6章(解码器)—->第4节: 分隔符解码器
Netty源码分析第六章: 解码器 第四节: 分隔符解码器 基于分隔符解码器DelimiterBasedFrameDecoder, 是按照指定分隔符进行解码的解码器, 通过分隔符, 可以将二进制流拆分成完整的数据包 同样继承了ByteToMessageDecoder并重写了decode方法 我们看其中的一个构造方法: 1public DelimiterBasedFrameD…- 3
- 0
-
Netty源码分析第4章(pipeline)—->第3节: handler的删除
Netty源码分析第四章: pipeline 第三节: handler的删除 上一小节我们学习了添加handler的逻辑操作, 这一小节我们学习删除handler的相关逻辑 如果用户在业务逻辑中进行ctx.pipeline().remove(this)这样的写法, 或者ch.pipeline().remove(new SimpleHandler())这样的写法, 则就是对han…- 6
- 0
-
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)—->第3节: recycler的使用和创建…
Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第3节: recycler的使用和创建 Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第三节: recycler的使用和创建 ** ** 这一小节开始学习 recycler相关的知识 , recycler是 netty实现的一个轻量级对象回收站…- 0
- 0
-
Java NIO框架Netty教程(二) – 白话概念
"Hello World" 的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。 声明,笔者一介码农,不会那么多专业的词汇和缩写,只能以最简单苍白的话来形容个人的感受和体会。如果您觉得这太不专业,笔者首先只能抱歉。然后,笔者曾转过《 Netty代码分析》,您可参考。 ChannelEv…- 3
- 0
-
详解JVM内存管理与垃圾回收机制4 – References
Java通过new关键字来创建对象时,JVM在堆中开辟空间存放对象实例数据,这时,定义的局部变量仍存储在栈中,它包含指向堆中对象的指针 ( 即对象在堆内存的起始地址索引 ),而不是对象本身,这个指针在Java中,被称为引用。来看下面的Java方法,它持有一个由String解析而来的Integer对象。 这里可能会造成大家的误解:指针 = 引用,但实际上它们并不完全相同 当我们一提到指针,就很容易把…- 0
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!