JVM
文章平均质量分 90
xieyu_zy
互联网攻城狮,DB方面的Java开发工作,多面手,做过传统行业开发,做过DBA,开发,技术管理,项目管理,产品管理,经过几年磨练,自认为算是高级泥水匠。技术上个人自认为擅长java相关核心技术,如JVM,JUC,JDBC,连接池,Java ByteCode,Java OOD设计,代码调优。擅长数据库应用技术Oracle及MySQL,擅长分布式存储架构分布式计算,善于常见问题诊断和系统调优。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
系统架构-性能篇章2(系统拆分1)
系统为什么拆分?系统做大了,并发量无法扛得住,如何做?业务做复杂了,单个应用中不能个性化,如何做?模块和逻辑对各类资源开销非常特殊,如何做?。。。。。。拆分、拆分、再拆分。由 全世界用一个系统表达全世界所有的企业和公司的业务开始,注定系统做大后必然拆分的走原创 2011-09-30 21:25:16 · 8426 阅读 · 10 评论 -
析JAVA之垃圾回收机制
本文为2010年编写,所以有很多看法不是很准确,有一定的参考价值,如需要更加深入细节,请参看,2012年编写的关于JVM的文章:认识JVM--第一篇-对象生成&回收算法认识JVM--第二篇-java对象内存模型JVM第三篇(简单demo)系统架构-性能篇章1(应用系统性能2-OOM&参数配置)相继的还会有更多的java深入的知识和机制。对于J原创 2010-05-22 22:03:00 · 5056 阅读 · 2 评论 -
认识JVM--第一篇-对象分配&回收算法
本来标题党想写成《深入JVM》,不过不太敢写,我想一小篇博客我想还不足以说明JVM,在本文中,会就我所知给大家介绍JVM的很多内部知识,概念会相对较粗,因为太细的内容要写,这里肯定写不出来;本文主要偏重理论,没有什么实践,中间除一些官方资料外,还有部分自身的理解,所以请大家不要完全信任本文内容;另外本文会有一小部分纠正以前一篇文章对于intern()使用方法的错误,本文会在其中说明使用错误的原因,原创 2011-06-18 16:26:00 · 8945 阅读 · 20 评论 -
javap浅析-书籍第3章的手写稿样稿
3.2.1javap命令工具第1章中我们就提到了有些地方需要用javap命令工具来看编译后的指令是什么,第2.2.1节中胖哥使用了一个简单的程序让大家感受了一下javap命令工具是什么,这里再次谈到javap命令工具了。或许这一次我们可以对javap命令工具说得稍微清楚一点。为此,胖哥会单独再写几段小程序给大家说说javap命令工具的结果怎么看。 胖哥为什么要给简单程序呢?为啥不直接来个复杂的原创 2013-12-20 19:05:36 · 9039 阅读 · 8 评论 -
Java JUC之Atomic系列12大类实例讲解和原理分解
在java6以后我们不但接触到了Lock相关的锁,也接触到了很多更加乐观的原子修改操作,也就是在修改时我们只需要保证它的那个瞬间是安全的即可,经过相应的包装后可以再处理对象的并发修改,以及并发中的ABA问题,本文讲述Atomic系列的类的实现以及使用方法,其中包含:基本类:AtomicInteger、AtomicLong、AtomicBoolean;引用类型:AtomicReference原创 2013-02-20 15:27:56 · 15653 阅读 · 19 评论 -
Java基础小技巧回顾--浅析String
其实本文非常简单,不过有很多朋友经常问,网上很多例子也写个大概,很多人也只是知道和大概,就本文而来读起来非常的轻松,不过算是一些小技巧;但是我们的程序中相信用得最多的就是char数组和byte[]数组,而String就是由char[]数组组成的,一般情况下我们就可以认为String用得是最多的对象之一。有关Sring的空间利用率方面,这里不想多说,只能说很低很低,尤其是你定义的Stri原创 2011-10-10 19:35:06 · 5907 阅读 · 18 评论 -
MySQL JDBC StreamResult通信原理浅析
好几年没写技术博客了,今天写一个小的技术点给大家分享,关于MySQL JDBC StreamResult的原理分享,难度不大,就当程序员的闲聊。如果使用MySQL JDBC读取过比较大的数据(例如超过1GB),应该清楚在读取的时候,很可能会Java堆内存溢出,我们的解决方案通常是使用useCursorFetch读取或Stream读取来处理。使用Stream读取的方式通常的操作方式是在执行SQL...原创 2018-10-17 17:02:56 · 15777 阅读 · 54 评论 -
常见Serialize技术探秘(ObjectXXStream、XML、JSON、JDBC byte编码、Protobuf)
今天是1024程序员节日,没错2的10次方,二进制的节日,那么我就突发奇想,写一篇关于网络传递二进制数据时的序列化和反序列化数据中各种常见的方案,其中不乏一些底层方案和一些开源界很流行的方案,它们在技术上的实现的初衷和背景有较大的区别,因此在设计的架构也会有很大的区别,最终在落地后的:解析速度、对系统的影响、传输数据的大小、可维护性及可阅读性等方面有着较大的区别。 文章分成3个部分:1...原创 2018-10-24 21:42:04 · 3281 阅读 · 4 评论 -
如何精确地测量java对象的大小-底层instrument API
关于java对象的大小测量,网上有很多例子,大多数是申请一个对象后开始做GC,后对比前后的大小,不过这样,虽然说这样测量对象的大小是可行的,不过未必是完全准确的,因为过程中包含对象本身的开销,也许你运气好,正好能碰上,差不多,不过这种测试往往显得十分的笨重,因为要写一堆代码才能测试一点点东西,而且只能在本地测试玩玩,要真正测试实际的系统的对象大小这样可就不行了,本文说说java一些比较偏底层的知识原创 2011-12-13 22:18:49 · 11008 阅读 · 19 评论 -
认识JVM--第二篇-java对象内存模型
前一段写了一篇《认识JVM》,不过在一些方面可以继续阐述的,在这里继续探讨一下,本文重点在于在heap区域内部对象之间的组织关系,以及各种粒度之间的关系,以及JVM常见优化方法,文章目录如下所示:1、回顾--java基础的对象大概有哪些特征2、上一节中提到的Class加载是如何加载的3、一个对象放在内存中的是如何存放的4、调用的指令分析5、对象宽度对其问题及空间浪费6、指令原创 2011-07-03 23:57:14 · 7495 阅读 · 9 评论 -
系统架构-性能篇章1(应用系统性能2-OOM&参数配置)
对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么多大多数在解决OOM的情况,于此,本文就只阐述这个内容,携带一些分析和理解和部分扩展内容,也就是JVM宕机中的一些问题,OK,下面说下OOM的常见情况(本文基于jdk 1.6系列版本来编写,其余的版本未必完全适用): 第一类内存溢出,也是大家认为最多,第一反应认为是的内存溢出,就是堆栈溢出:那什么样的情况就是堆栈溢出呢?当原创 2011-09-14 21:35:22 · 8237 阅读 · 0 评论 -
java在处理大数据的时候一些小技巧
众所周知,java在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,压缩,并行,临时文件等方法;例如,我们要将数据库(不论是什么数据库)的数据导出到一个文件,一般是Excel或文本格式的CSV;对于Excel来讲,对于POI和JXL的接口,你很多时候没有办法去控制内存什么时候向磁盘写入,很恶心,而且原创 2012-07-06 13:33:28 · 21079 阅读 · 19 评论 -
java之J.U.C系列文章--概括与基础
J.U.C是java系列一块看似简单,水很深的区域,但是不论是深入java还是分布式的一些东西,这都算是基础,虽然以前乱七八糟写过一些多线程的文章,不过都比较乱了一点,最近有打算逐步深入来写多篇文章来说说我对这些东西的小理解。1、首先线程分为内核线程、用户线程;在Linux下java的线程其实是在java私有栈上有一个用户线程,和OS级别有一个轻量级的进程来实现。2、在操作java原创 2012-08-13 16:29:14 · 5237 阅读 · 1 评论 -
JVM第三篇(简单demo)
本来写完前面两篇JVM,已经不再想写这类似的东西,因为很多知识点很难吃透,即使写出来也很难让人理解,即使理解还不如看官方资料,不过还是鼓起勇气写下这篇文章,本文主要是demo去理解一些JVM的内存知识,版本为hotspot的1.6.24版本,不过本文不讲指令,只是模拟一些东西,类似于出题目,和大家一起来做下;本文几个简单实验不能说明所有问题,仅仅是分享一下理解JVM的内在和一些不可告人的秘密,以及原创 2011-08-19 16:21:20 · 5197 阅读 · 7 评论 -
java在CPU中的一些个破事
其实写java的人貌似和CPU没啥关系,最多最多和我们在前面提及到的如何将CPU跑满、如何设置线程数有点关系,但是那个算法只是一个参考,很多场景不同需要采取实际的手段来解决才可以;而且将CPU跑满后我们还会考虑如何让CPU不是那么满,呵呵,人类,就是这么XX,呵呵,好了,本文要说的是其他的一些东西,也许你在java的写代码时几乎不用关注CPU,因为满足业务才是第一重要的事情,如果你要做到框架级别,原创 2012-07-30 15:29:26 · 6123 阅读 · 19 评论 -
java之架构基础-动态代理&cglib
本文核心主要参数动态代理和cglib;在以前的文章中,有提及到动态代理,它要解决的就是,当我们的某些代码前面或后面都需要一些处理的时候,如写日志、事务控制、做agent、自动化代码跟踪等,此时会给你带来无限的方便,这是JVM级别的提供的一种代理机制,不过在这种机制下调用方法在JVM7出来前还没有invokeDynamic的时候,调用的效率是很低的,此时方法调用都是通过method的invoke原创 2012-06-01 17:30:29 · 6115 阅读 · 2 评论 -
java也能写出点点算法-像C++一样去优化核心并发的代码例子1
java其实更多用来写业务代码,代码写得好不好,关键看抽象能力如何,不过如果你要用java写很核心的插件和高并发的片段,那么可能还是需要注意一些写法,那种写法可能会更好,才能使得并发量提高,而且更少的使用CPU和内存;我最近在一段采集系统访问的java代码,通过过滤器切入到应用中,遇到的一些小细节的调整,感觉还有点意思,以下为收集信息中碰到的两个需要判定的地方(对java优化没有任何要求的,本文纯原创 2012-03-23 17:54:02 · 4609 阅读 · 0 评论 -
java之HeapByteBuffer&DirectByteBuffer以及回收DirectByteBuffer
byte buffer一般在网络交互过程中java使用得比较多,尤其是以NIO的框架中;看名字就知道是以字节码作为缓冲的,先buffer一段,然后flush到终端。而本文要说的一个重点就是HeapByteBuffer与DirectByteBuffer,以及如何合理使用DirectByteBuffer。1、HeapByteBuffer与DirectByteBuffer,在原理上,原创 2012-05-08 20:12:40 · 29848 阅读 · 19 评论 -
如何修改request的parameter的几种方式
这篇文章仅仅用来参考,本身不想写,request之所以不想让你修改parameter的值,就是因为这个东西一般不然改,有人问我为什么不让改,表面上说我只能说这属于篡改数据,因为这个使用户的请求数据,如果被篡改就相当于篡改消息,如果你一天给别人发消息发的是:你好,而对方收到的是:fuck you!,你会怎么想,呵呵!当然它主要是怕不安全把参数数据该乱了,因为程序员毕竟是自己写程序,尤其是在公共程序里原创 2012-12-28 17:03:11 · 79611 阅读 · 64 评论 -
MySQL JDBC为什么都不开启PreparedStatement Cache
同样技术的文章我发现几年前写过一次,^_^:https://blog.csdn.net/xieyuooo/article/details/10732375当时写这篇文章更多偏重于内部的代码实现逻辑来写,可能很多朋友看得更多是云里雾里,不知道对自己有什么帮助,最近也有人在问我为什么我们写代码不开启PS Cache,其实从源码确实可以找到答案,不过我觉得用博客写源码分析可能更多是对我自己有帮助,对...原创 2019-08-20 22:47:56 · 9217 阅读 · 10 评论
分享