- 浏览: 39774 次
- 性别:
- 来自: 杭州
最新评论
-
Bruce_Tender:
非常感谢楼主分享
虚拟机stack全分析 -
carlosfu:
非常好,收获很大,很赞。
虚拟机stack全分析 -
huoyanxueren:
半成品,需要自己结合各种组件去搭建,类似于wordpress。 ...
博客迁移到www.itcamel.com -
ForeverCjl:
你那个博客是自己写的还是用的开源现成的?
博客迁移到www.itcamel.com
文章列表
博客迁移到新站点 www.itcamel.com
www.itcamel.com
www.itcamel.com
www.itcamel.com
前言
最近在看java NIO的一些中文资料,确实比较的头疼。文章的好坏良莠不齐,好的文章一看,受益不少;讲的不好的,被引得偏差了3百里才绕回来。更有的只有NIO 1.0的内容,2.0的只字未提。本文主要目的是对NIO知识系统进 ...
[译] http://en.wikipedia.org/wiki/Zero-copy
"Zero-copy" 用来描述主机的CPU不执行将数据从一个存储区复制到另一个的任务。这经常是在网络分发文件的时候用来节省电力和内存。[1]
Principle
各种操作系统上的Zero-copy方式例如设备驱动程序,文件系统,网络协议栈,大大提高了某些应用程序的性能和系统资源利用率。在数据拷贝过到另外一个机器的过程中,允许CPU并行去处理另外的一个任务,性能可以有效地提高。此外, zero-copy 操作减少了用户空间和内核空间的切换时间。让一个cpu去处理大量的数 ...
背景
Google、Facebook、Amazon等互联网巨头对于数据的创造性使用,创造出了很多辉煌的商业产品。如Amazon创造出的新的推荐模式:”查询此商品的顾客也查询了。。。。。”、“看过此商品的后的顾客买的其他商品有。。。。。。”、“购买了您最近浏览过的商品的顾客同时购买了。。。。。。”,还有LinkedIn公司创造的“你可能认识的人”。这些机制无不是建立在大量数据分析的基础上。
分布式日志方案作为互联网公司,每天庞大的日志数据将是一笔宝贵的财富,对大规模日志数据进行采集、追踪、处理将是非常有收益的。一些开源项目的出现,也极快地促进了这个方面工作的进展。本文针对据目前流行的日志框 ...
java.lang.instrument是java 5开始引入的,它把 Java 的 instrument 功能从本地代码中解放出来,使之可以用 Java 代码的方式解决问题。使用 Instrumentation,开发者可以构建一个独立于应用程序的代理程序(Agent),用来监测和协助运行在 JVM 上的程序,甚至能够替换和修改某些类的定义.Java5的特性:运行前利用命令行参数或者系统参数来设置代理类,虚拟机在初始化之时(在绝大多数的 Java 类库被载入之前),instrumentation 的设置已经启动,并在虚拟机中设置了回调函数,检测特定类的加载情况,并根据设置完全特定功能.
例子 ...
通过jps -lv 获取到本地的一个JVM实例进程。再通过jstack pid > thread.txt ,把stack trace输出到thread.txt文件中。
2012-08-28 23:16:39
2012-08-28 23:16:39
Full thread dump OpenJDK Client VM (19.0-b09 mixed mode, sharing):
"Attach Listener" daemon prio=10 tid=0xb3da5400 nid=0x13ea waiting on condition [ ...
jps -mlVv localhostjps [ options ] [ hostid ]其中,options可以用:-q (安静) -m (输出传递给main方法的参数) -l (显示完整路径) -v (显示传递给JVM的命令行参数) -V (显示通过flag文件传递给JVM的参数)
jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。jstat -class pid:显示加载class的数量,及所占空间等信息。jstat -compiler pid:显示VM实时编译的数量等信息。jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对 ...
寻找响应时间最长的线程
- 博客分类:
- 性能优化
在排查一些load过载和CPU使用过高的情况,我们往往会去排查对应的JVM进程下所有线程的使用情况。到底是线程出现死锁,线程僵死,或者其他情况。但是有一个比较直观的,就是看哪个线程最耗时,他基本就是那个有问题的。
1、找出进程pid。 jps -v 或者ps aux| grep java都可以达成目的。
2、查看该进程下的所有线程。top -H -p 18919
top命令的功能比较强大。-H 是进程下的线程,-p 指定进程id。其他的功能可通过man top查看。
具体参照也可以参考这个文章,说明的不错。http://www.jb51.net/LINUX ...
谈到单例模式,目前最常见的代码模式不外乎两种:懒加载模式和饥饿模式。常见实现如下:
public class Singleton {
private static Singleton instance;
public static synchronized Singleton getInstance(){
if(instance ==null){
instance = new Single ...
BitTorrent设计的目的就是能够在很短的时间内传送大文件到很多个目的地.他们不仅仅只是让一般用户能够用来下载电影或者音乐,而是同样能够让企业从中获益.Facebook就在使用Bittorrent来很快的部署自己的代码到全球的服务器上.大访问量的服务提供商例如Facebook他们需要上千台的服务器来提供服务给用户.这样他们就必须在很短的时间内让用户不管是什么地方的都能够访问到最新的服务,就需要每一台服务器上面的代码都是最新的.
通过访问来自Facebook的系统工程师部门的Tom Cook,了解到他们刚开始每天的代码更新都会遇到很多的问题,知道他们发现了Bittorrent,他 ...
SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。不是开源软件,但是可以免费使用。 其实还有一个众所周知的API JavaHL。特别是在svn相关的一些工具和插件上,两个API都被广泛使用。最经典的就是eclipse IDE上的Subclipse插件。在window->Prepfences->SVN->SVN接口一栏中,就有两个选项可供选择:JavaHL和SVNKIt。这里就不得不将他们之间不得不说的故事了。 直白说,SVNKit就是JavaHL的加强版,一 ...
一、服务器性能因素
1、CPU 2、内存 3、磁盘I/O带宽 4、网络I/O带宽
Load:
系统负载指运行队列的平均长度,也就是等待CPU的平均进程数。Load越高说明系统响应越慢,如果load是0,代表进程不需要等待,立刻就能获得cpu运行。可以通过查询文件/proc/loadavg获取系统在前一分钟、前五分钟和前十五分钟的平均负载以及当前运行的进程、系统的进程数和上一次调度运行的进程。
justin@junjun:/proc$ cat/proc/loadavg
0.71 0.70 0.63 1/403 5111
在linux系统中,也可直接通过命令行 ...