OOM分析——错误使用Servlet API导致内存溢出

http://sishuok.com/forum/blogPost/list/7933.html 转载于上面文章 我也遇到过类似的Servlet以非线程安全的方式进行操作的情况,情况是有个servlet上,用了实例变量,之后在并发量上来的时候,发现了用户偶尔会取道了其他用户的结果,后来把这个实例变量消除掉,给他挪到方法内部,问题解决了,这也就说明了在servlet里不建议用实例变量的情况,如下所述那样。 请先前往《Spring内存溢出问题》查看…

JDK8中新增原子性操作类LongAdder

LongAdder简单介绍 LongAdder类似于AtomicLong是原子性递增或者递减类,AtomicLong已经通过CAS提供了非阻塞的原子性操作,相比使用阻塞算法的同步器来说性能已经很好了,但是JDK开发组并不满足,因为在非常高的并发请求下AtomicLong的性能不能让他们接受,虽然AtomicLong使用CAS但是CAS失败后还是通过无限循环的自旋锁不断尝试的 public final long incrementAndGet() { for (;;) { long current = g…

深入JDK源码_Index –> 深入JDK源码之ThreadLocal类 –> 陶邦仁 又发现一牛人

深入JDK源码 深入JDK源码之定时操作Timer类和TimerTask类实现深入JDK源码之Observer接口和Observable类实现观察者模式深入JDK源码之集合类图深入JDK源码之ArrayList类深入JDK源码之LinkedList类深入JDK源码之HashMap类深入JDK源码之Arrays类中的排序查找算法深入JDK源码之ThreadLocal类 http://my.oschina.net/xianggao/blog/392440 ThreadLocal概述 学习JDK中的类,首先看下JDK API对此类的描述,描…

深入JVM锁机制2-Lock

前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。 在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concurrent.AbstractQueuedSynchronizer类,实现思…

JAVA并发编程(一)(基于计算机底层.jvm内存模型.mysql(数据搬运))

ps:前因,一直在写后台系统是没有分析和需求来做并发的思考的。但是最近接触了jvm和并发的一些知识,使我对计算机底层已经他们之间的交互有了一些了解,使我对蒙了两年多的那层美丽面庞揭开了一点可以探索的起点。 cpu.内存.磁盘 目前的计算机以摩尔定律(以超性价比的时间增长单机的性能),所以现在的我们尽量的压榨计算机的性能,尽量的不让计算空闲下来。就要使用计算机的多核处理能力。 大多数…

Spring MVC中的DispatcherServlet学习

http://www.guoweiwei.com/archives/797 DispatcherServlet介绍 DispatcherServlet是Spring前端控制器的实现,提供Spring Web MVC的集中访问点,并且负责职责的分派,与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1、文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析; 2…

JAVA并发编程之多线程并发同步业务场景与解决方案

Java并发编程是一个很热点的话题,无论在面试时候还是在高并发的场景中。都会涉及到Java的并发编程相关的知识。Java的并发编程有两个主要的基础知识,一个是线程安全另一个是线程间通信。本Java并发编程系列博客作为博主系统学习Java并发编程的知识记录。也希望可以帮助其他人。   摘要 1,线程概念 2,Java线程的实现方式 3,Java线程状态流转介绍 4,Thread类中的常用方法分析 1.什么是线程 线程,…

Java并发编程学习笔记(九)Java内存模型(一知半解 留以后回顾学习)

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,因此Java内存模型在…

Java并发编程:Synchronized及其实现原理

Java并发编程:Synchronized及其实现原理Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:volatile的使用及其原理一、Synchronized的基本使用  Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。…