java
文章平均质量分 79
zapldy
编程有趣!
展开
-
Java虚拟机内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子翻译 2012-03-27 23:53:33 · 7848 阅读 · 1 评论 -
Java并发总结(三):中断线程
线程的状态在了解如何中断线程之前,先应该弄清楚线程的几种状态:新建状态(New):一个新的线程在被创建之后,在运行(或阻塞)之前的状态。就绪状态(Runnable):当一个线程只要拥有CPU时间片就能运行的时候,这个线程就处于就绪状态。阻塞状态(Blocked):线程还没有死亡,但是由于一些原因不能继续运行,但是还能回到就绪状态。死亡状态转载 2012-12-12 23:44:45 · 1193 阅读 · 1 评论 -
深入剖析Socket实现
在我们平时的开发中用到的最多的是HTTP协议,而HTTP协议本身是一种应用层协议,属于文本协议;并且这种协议也基本上满足了应用的大部分需求。HTTP协议当初的设计并没有想到它应用的是如此的广泛,所以设计的时候考虑的比较简单实用,也许也就是这种简单实用才这么广泛;但如今,HTTP协议似乎并不能满足所有的需求,特别是当今的web2.0时代,浏览器应用横行的年代,也越来越多需要长连接的应用,所以在HTM原创 2010-08-15 18:17:00 · 9300 阅读 · 0 评论 -
利用MemoryAnalyzer进行OutOfMemoryError的诊断分析
这篇帖子只介绍利用MemoryAnalyzer进行简单的JVM的堆的分析,至于JVM的内部结构是怎么样的,这里不进行分析。好吧,废话不多说;首先如果我们要分析JVM某个时刻的Heap的对象分配情况,我们就必须要dump这个时刻的JVM的heap(堆);有以下几个办法进行dump某个时刻JVM的heap内容: 1、 使用$JAVA_HOME/bin/jmap -dump来触发,原创 2012-07-09 00:19:43 · 14244 阅读 · 0 评论 -
Java-jps命令的使用
jps -- Java Virtual Machine Process Status Tool可以列出本机所有java进程的pid jps [ options ] [ hostid ] 选项 -q 仅输出VM标识符,不包括class name,jar name,arguments in main method -m 输出main method的参数 -l 输转载 2012-04-30 00:00:29 · 2833 阅读 · 0 评论 -
jhat中的OQL(对象查询语言)
jhat中的OQL(对象查询语言) 如果需要根据某些条件来过滤或查询堆的对象,这是可能的,可以在jhat的html页面中执行OQL,来查询符合条件的对象基本语法: select [from [instanceof] ][where ]解释: (1)class name是java类的完全限定名,如:java.lang.String, java.util.Arra转载 2012-04-30 00:15:15 · 1075 阅读 · 0 评论 -
jhat命令
jhat命令 -- Java Head Analyse Tool 用途:是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言第一步:导出堆 第二步:分析堆文件 第三步:查看html有时你dump出来的堆很大,在启动时会报堆空间不足的错误,可以使用如下参数:jhat -J-Xmx512m 对转载 2012-04-30 00:05:42 · 977 阅读 · 0 评论 -
Java虚拟机类装载的原理及实现
一、引言 Java虚拟机(JVM)的类装载就是指将包含在类文件中的字节码装载到JVM中, 并使其成为JVM一部分的过程。JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块, 而不影响系统其他功能模块的正常运行。本文将分析JVM中的类装载系统,探讨JVM中类装载的原理、实现以及应用。二、Java虚拟机的类装载实现与应用2.1 装载过程简介翻译 2012-03-28 00:20:18 · 1652 阅读 · 0 评论 -
漫谈数据库锁
前言 前段时间在线上和项目当中遇到了很多关于用mysql的GET_LOCK()函数获取锁导致的一些问题,主要有两类问题: 1、一个连接中不能同时获取两把锁,因为获取后一个的时候会自动释放前面一把锁;另外如果获得锁或者释放锁所使用的connection不一样,假如获得锁的connection被连接池回收了,也可能会导致第一把锁自动释放,最终导致你的业务还没有处理完,原创 2015-04-19 14:52:59 · 1265 阅读 · 0 评论