-
Netty源码分析第2章(NioEventLoop)—->第6节: 执行select操作
Netty源码分析第二章: NioEventLoop ** ** 第六节: 执行select操作 分析完了selector的创建和优化的过程, 这一小节分析select相关操作 跟到跟到select操作的入口,NioEventLoop的run方法: 1protected void run() { 2 for (;;) { 3 try { 4 switch (selectStrategy.c…- 12
- 0
-
Netty源码分析第1章(Netty启动流程)—->第4节: 注册多路复用
Netty源码分析第一章:Netty启动流程 ** ** 第四节:注册多路复用 回顾下以上的小节 , 我们知道了 channel 的的创建和初始化过程 , 那么 channel 是如何注册到 selector 中的呢 ? 我们继续分析 回到上一小节的代码 : 1final ChannelFuture initAndRegister() { 2 Channel channel = null;…- 0
- 0
-
Netty系列之Netty线程模型
1. 背景 1.1. Java线程模型的演进 1.1.1. 单线程 时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。 在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。 1.1.2. 多线程 随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配已经达到32…- 20
- 0
-
谈谈JVM内存区域的划分,哪些区域可能发生 OutOfMemoryError?
首先,程序计数器(PC,Program Counter Register)。在 JVM 规范中,每个线程都有它自己的程序计数器,并且任何时间一个线程都只有一个方法在执行,也就是所谓的当前方法。程序计数器会存储当前线程正在执行的 Java 方法的 JVM 指令地址;或者,如果是在执行本地方法,则是未指定值(undefined)。 第二,Java 虚拟机栈(Java Virtual Machine S…- 7
- 0
-
Android、JUnit深入浅出(五)——AndroidTest例子分析
前面我们学习了android.test包中的大部分类,是该通过学习具体的例子将前面的知识融会贯通 首先分析整个工程的结构图,如下: AndroidTestCase,Testsuite在前面的篇幅中已经学习过了,ContestTest、MathTest、SomeTest、ExampleSuite在前面的例子中已经为大家介绍了,这里我们主要说明整个程序是如何运行的? 核心类代码简要列举,如下: pub…- 1
- 0
-
Java并发编程(01):线程的创建方式,状态周期管理
一、并发编程简介 1、基础概念 程序 与计算机系统操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据。 进程 进程是计算机中的程序,关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 线…- 0
- 0
-
JVM垃圾回收与性能调优
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范, JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配, Perm不属于堆内存,有虚拟机直接分配,但可以通过 -XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(N…- 2
- 0
-
JVM性能优化系列-(6) 晚期编译优化
目前已经更新完《Java并发编程》和《Docker教程》,欢迎关注【后端精进之路】,轻松阅读全部文章。 Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-(6) Java线程…- 3
- 0
-
JVM GC优化思路
JVM的GC一般分为Young GC和Full GC,而Full GC由于STW(stop the world)需要消耗的时间一般情况比Young GC要多很多,所以GC优化思路是尽量减少Full GC的频率,减少STW以提升性能。 现在我们知道了JVM优化的方向是减少Full GC的频率,要减少Full GC的频率必然要知道对象是如何进入老年代的。 那么我们先考虑几个问题,Young GC、Fu…- 4
- 0
-
【开发工具】JAVA性能分析:6、超详细的JProfiler内存分析(官方中文版)
Memory Profiling——内存分析 有两种方法可以获取有关堆上对象的信息。一方面,分析代理可以跟踪每个对象的分配和垃圾收集。在JProfiler中,这称为“分配记录”。它告诉您已分配对象的位置,还可用于创建有关临时对象的统计信息。另一方面,JVM的分析界面允许分析代理采用“堆快照”,以便检查所有活动对象及其引用。需要此信息才能理解为什么不能对对象进行垃圾回收。 分配记录和堆快照都是昂贵的…- 430
- 0
-
Java虚拟机性能管理神器 – VisualVM(9) 排查JAVA应用程序线程死锁
1. JAVA应用程序线程锁原因 JAVA线程锁的例子和原因网上一大堆,我也不在这里深入说明,这里主要是否讲如何使用VisualVM进行排查。至于例子可以看这里:http://blog.csdn.net/fengzhe0411/article/details/6953370 这个例子比较极端,一般情况下,出现锁竞争激烈是比较常见的。 2. 排查JAVA应用程序线程锁 启动 VisualVM,在应用…- 24
- 0
-
JVM优化Java代码时都做了什么?
JVM 在对代码执行的优化可分为运行时(runtime)优化和即时编译器(JIT)优化。 运行时优化主要是解释执行和动态编译通用的一些机制, 比如说锁机制(如偏斜锁)、内存分配机制(如TLAB)等。除此之外,还有一些专门用于优化解释执行效率的,比如说模版解释器、内联缓存(inline cache,用于优化虚方法调用的动态绑定). JVM 的即时编译器优化(JIT)是指将热点代码以方法为单位转换成机…- 6
- 0
-
Netty游戏服务器实战开发(9):利用redis或者zookeeper实现3pc分布式事务锁(三)。支撑腾讯系列某手游百万级流量公测
导读:在编写前面两篇文章的时候,博主其实已经把这个项目做完了,因为不可能一边写文章,一遍写项目。所以我都是把项目做完之后然后通过自己测试之后确保没有问题就来编写文章。 最近估计大家都听说了“华夏银行技术处长编写病毒植入系统,盗窃 700 余万受审”按键沸沸扬扬。很多人就想知道,如此可爱的程序员宝宝如何走向犯罪的道路,所以不管出于人性和社会道德,技术人员还是不要轻易的在系统中留下后门程序。否者被查出…- 2
- 0
-
Netty源码分析第2章(NioEventLoop)—->第6节: 执行selector操作
Netty源码分析第二章: NioEventLoop 第六节: 执行select操作 分析完了selector的创建和优化的过程, 这一小节分析select相关操作 跟到跟到NioEventLoop的run方法: 1protected void run() { for (;;) { try { switch (selectStrategy.calculateStrategy(selec…- 1
- 0
-
Netty源码分析第1章(Netty启动流程)—->第3节: 服务端channel初始化
Netty源码分析第1章(Netty启动流程)---->第3节: 服务端channel初始化 Netty源码分析第一章:Netty启动流程 ** ** 第三节:服务端channel初始化 回顾上一小节的initAndRegister()方法: 1final ChannelFuture initAndRegister() { 2 Channel channel = null; 3 tr…- 1
- 0
-
Java NIO框架Netty教程(十二)-并发访问测试(中)
写在前面:对Netty并发问题的测试和解决完全超出了我的预期,想说的东西越来越多。所以才出现这个中篇,也就是说,一定会有下篇。至于问题点的发现,OneCoder也在努力验证中。 继续并发的问题。在《Java NIO框架Netty教程(十一)-并发访问测试(上)》中,我们测试的其实是一种伪并发的情景。底层实际只有一个Channel在运作,不会出现什么无响应的问题。而实际的并发不是这个意思的,独立的客…- 2
- 0
-
深入理解Java内存模型(六)——final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。 下面,我们通过一些示例性的代码来分别说明这两个规…- 3
- 0
-
Android、JUnit深入浅出(四)——AndroidTestRunner
随着学习的深入,发现包在前面的篇幅中,我们忽略了android.test包中一个重要的类AndroidTestRunner,这个类是android.test包的核心类,下面为大家详细说明,并补充说明一些相关的内容。 junit.framework包中的TestListener接口 这个接口的函数,列举如下: 与这个接口,相关的类就只用TestResult,相关接口如下: 看到这里就应该知道如何使用…- 24
- 0
-
Java并发编程(1)-Java内存模型
本文主要是学习Java内存模型的笔记以及加上自己的一些案例分享,如有错误之处请指出。 一 Java内存模型的基础 1、并发编程模型的两个问题 在并发编程中,需要了解并会处理这两个关键问题: 1.1、线程之间如何通信? 通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种: 共享内存和消息传递 。 a) 在 共享内存 的并发模型里, 线程之间共享程序的公共状态,通过写-读内…- 7
- 0
-
JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖
JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 一.单例设计模式 什么是设计模式? JAVA当中有23种设计模式,解决某一问题最有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 想要保证对象唯一该怎么做》 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 2.还为了让其他程序访问到该类对象,只好在本类中自定义一个对象 3…- 0
- 0
-
JVM性能优化系列-(5) 早期编译优化
目前已经更新完《Java并发编程》和《Docker教程》,欢迎关注【后端精进之路】,轻松阅读全部文章。 Java并发编程: Java并发编程系列-(1) 并发编程基础 Java并发编程系列-(2) 线程的并发工具类 Java并发编程系列-(3) 原子操作与CAS Java并发编程系列-(4) 显式锁与AQS Java并发编程系列-(5) Java并发容器 Java并发编程系列-(6) Java线程…- 5
- 0
-
jvm 性能监控与分析工具
1. jps jvm 进程状态统计 -l 输出对应应用主方法的完整包名或者jar的完整路径名 (常用于确定 所观察应用的lvmid, 性能分析的第一步) -m 输出传递给主方法的参数 -v 输出 jvm参数 2. jinfo 查看/设置进程的系统参数及jvm 参数(人工设置与默认设置) 例:查看lvmid的gc详情,使用如下命令为运行中的程序配置jvm参数(功能同在 应用启动前做jvm配置 -XX…- 9
- 0
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!