`
teasp
  • 浏览: 59652 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
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的最大线程数: 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成为瓶颈,因而有一种常用 ...
Global site tag (gtag.js) - Google Analytics