- 浏览: 61303 次
- 性别:
- 来自: 深圳
最新评论
-
ggd543:
ReadCompletionHandler 的complete ...
Java AIO小例子 -
eve:
hailongshih 写道eve 写道hailongshih ...
程序员的几个缺点 -
hailongshih:
eve 写道hailongshih 写道Cannot agre ...
程序员的几个缺点 -
m635674608:
asia007 写道m635674608 写道是吗?1.我很帅 ...
程序员的几个缺点 -
asia007:
m635674608 写道是吗?1.我很帅。2,情场高手,经常 ...
程序员的几个缺点
文章列表
使用visualvm通过JMX远程监控JVM
- 博客分类:
- 备忘杂记
1. 如何配置visualvm监控
visualvm支持在linux和windows上启用图形界面监控jvm的资源,基于目前我们的server资源比较紧张,而且从监控方便的角度来分析(我们现有server的linux系统是关闭图形界面的,如果要支持visualvm的图形显示需要安装插件),我推荐在自己的windows环境中安装监控的客户端
Visualvm目前支持两种remote connection方式,分别是jstatd和JMX方式;我看了一下官方的说明文档,如果是针对jboss的监控,官方还是推荐使用JMX的方式监控,因此下面我就讲述一下如何在server端以及客户端配置JMX方式 ...
我之前在http://teasp.iteye.com/blog/1870871这里贴出了两种计算Java对象的方式,一种是根据虚拟机实现直接计算,另一种是通过new对象测出来实际大小。前者效率高,但是不通用,而且还是有问题的,后者正确性应该不错,但是效率低。现在又从http://www.jroller.com/maxim/entry/again_about_determining_size_of这里获得了第三种方式,通过Instrumentation计算对象大小,不过根据我的测试,这份代码应该是有bug,希望有感兴趣的童鞋能一起来研究下:
/**
* 因为要用到java.lan ...
Java7 NIO里面的新特性AIO出来也很久了,一直都没用过,今天没事写个小例子体验一下。感觉AIO要比同步NIO要简单点,写出正确的AIO比写同步NIO要容易一些,但是更不好理解,异步编程就是这样,不符合人类的直观感受。
服务端代码:
public class TestAioServer
{
private static AtomicInteger recvNum = new AtomicInteger(0);
private static AtomicInteger sentNum = new AtomicInteger(0);
...
好多年都没用Java里面的NIO写Socket应用了,Mina等框架封装了太多东西,现在重新写个NIO Socket的小例子回顾下。其实NIO写正确还是挺不容易的,太多的东西要注意,这个例子太过简单,要想在生产中使用还有更多的东西要注 ...
记录下,备忘。
很多时候我们想知道正在执行的class文件或者jar所在的路径,以方便加载一些资源。下面的一些方法可以帮助到我们:
1 System.out.println(System.getProperty("user.dir")); 2 System.out.println(XXX.class.getProtectionDomain().getCodeSource().getLocation()); 3 System.out.println(XXX.class.getProtectionDomain ...
之前写了个同样功能的例子,里面用的是TCP socket通信逐个IP进行查找,效率比较低。现在改成UDP进行广播,在限定时间内没找到会放弃。本版本效率应该高很多。当然,条件是被查找的机器也运行以下代码:
public class IpHostInLan1
{
private static final int PORT = 4322;
private static final String NOT_FOUND = "NotFound";
private ConcurrentHashMap<String, Strin ...
本例需要被找的机器同时也在运行以下代码。目前是遍历所有IP进行查找,效率很低,在没找到更好的办法之前只好用它了。
/**
* 在局域网(LAN)里面根据主机名找到对应的IP。
* 设计作者: teasp
* 信息描述:
*/
public class IpHostInLan
{
private static final int PORT = 4321;
private static final String NOT_FOUND = "NotFound";
private ConcurrentHashMa ...
Restlet设置最大线程数
- 博客分类:
- 代码琐记
如下代码可以设置Restlet的最大线程数:
public static void main(String[] args) throws Exception
{
Component component = new Component();
Context context = new Context();
context.getParameters().set("maxThreads", "100");
context.getParameters().set(& ...
下面是网络上流传的关于提高性能的做法,本人对其中一部分做法做了些点评:
1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说 ...
由于Java的设计者不想让程序员管理和了解内存的使用,我们想要知道一个对象在内存中的大小变得比较困难了。本文提供了可以获取对象的大小的方法,但是由于各个虚拟机在内存使用上可能存在不同,因此该方法不能在各 ...
今天在工作中遇到了这样一个Error,IllegalAccessError。java.lang.IllegalAccessError: class sun.reflect.GeneratedConstructorAccessor3 cannot access its superclass sun.reflect.ConstructorAccessorImpl。本系统使用了OSGI,初步分析,应该是系统内不止一个classloader加载了ConstructorAccessorImpl,使用visualvm查看,果然有两个ConstructorAccessorImpl,仔细排查系统内的依赖 ...
public class BinSearch1st {
Random random = new Random();
/**
* 二分查找,找到s的下标,如果没有返回-1
* @param arr
* @param s
* @return
*/
public int bsearch(int[] arr, int s) {
int left = 0;
int right = arr.length - 1;
int cur = 0;
...
public class IncorrectSerialGenerator {
public static final int MAX_VAL = 999;
public static final int R_NUM = getRNum(MAX_VAL);
private static AtomicInteger val = new AtomicInteger(0);
/* private static AtomicReference<AtomicInteger> ref = new AtomicReference& ...
/**
* 生成序列号,最大值为MAX_VAL。如果达到MAX_VAL,从0开始。
*/
public class SerialGenerator {
public static final int MAX_VAL = 999;
public static final int R_NUM = getRNum(MAX_VAL);
private static AtomicReference<AtomicInteger> ref = new AtomicReference<AtomicInteger>(new Atom ...
Java的设计者设计String的时候,用一个私有变量缓存了hash值。这显然是用空间换取时间的做法。那么这种做法是否合理呢?我认为:相当的不合理。
假如调用hashCode的时候都用的是同一个String对象,那么缓存hash值的做法是非常可取的。问题是,假如只是假如,在真实的应用程序环境下,这个假定是不成立的,多数情况下我们存在HashMap的key上的String是一个实例,而查找的时候却用的是另外一个实例,这样一来,缓存起来的hash值毫无用处反而还多占内存空间。
根据经验来说,多数应用都是使用内存多而利用cpu少,也就是说内存常常会先比cpu成为瓶颈,因而有一种常用 ...