`
文章列表
        先分享下自己build出来的fastdebug版本的openjdk: openjdk7(24.80-b04), openjdk8(25.0-b70) =====================================================================================         由于想看下cms gc的debug日志,验证个问题,但是发现jvm的cpp代码里头,要Verbose值为true才能看到debug信息,而这个vm参数只能在debug模式下才能设置,于是就自己动手build出了下jdk。         ...
        接着上篇《一个对象占用多少字节?》中遇到的问题:         UseCompressOops开启和关闭,对对象头大小是有影响的,开启压缩,对象头是4+8=12byte;关闭压缩,对象头是8+8=16bytes。这个如何观察验证呢?       基于上述事实,通过new A()和new B()占用字节推断,基本类型int在开启、关闭压缩情况下都是占用4个bytes的,这个没有影响。而通过B和B2在开启、关闭指针压缩情况下的对比看,Integer类型分别占了4 bytes和8 bytes,实际上引用类型都是这样。如何验证?        new Integer[0]在压缩前 ...
        老早之前写过一篇博客,是关于一个Integer对象到底占用多少字节的,现在看来,那篇文章竟然计算错了。这次再去计算,是因为之前写的一篇关于字长的文章里,看到了hotspot jvm里,对象占用空间是8字节对齐的,再加上之前关于字节那文章里带着一点-XX:+UseCompressedOops压缩指针参数的疑问,重新探究了下一个对象到底占用多少字节,以及如何计算它占用空间的方法。主要是参考了这篇很久以前的文章,不过试验了一把,instrumentation这种方法还是靠谱的。 import java.lang.instrument.Instrumentation; impor ...
1、pom打jar包的时候设置MANIFEST.MF的key/value,可以通过在pom.xml文件中添加plugin的方式来实现,这些plugin都在<project><build><plugins>下边: <plugin> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <finalName>test& ...
        cpu字长是指cpu同时参与运算的二进制位数,现在主流的pc的机器字长都是64位的。机器字长直接决定着机器可寻址的虚拟空间地址大小。   The word size of a computer generally indicates the largest integer it can process in a single instruction, and the size of a memory address, which is usually, but not necessarily the same as the integer size.         ...
        开发过程中,不少情况下都会遇到需要通过反射修改对象字段值的情况,但是很多情况下,直接反射效率比较低,而你如果读过jdk代码,可能多少会发现jdk里边经常闪现这UNSAFE的的身影,比如ConcurrentLinkedQueue里边到处都是。         为啥jdk里边到处都用这个东西呢?YY下,一方面是因为效率高,另一方面是因为它提供了很强大底层操作的功能,比如不用AtomicObject就可以直接支持cas操作修改对象字段,可以直接申请释放内存。         调用效率高,到底有多高呢?直接上代码: import sun.misc.Unsafe; impo ...
        cache line对内存访问的影响很早就看到了,但是没有写过例子跑过,突然兴起就写了下,对这里第一个例子稍微做了改造。要注意jvm参数设置,新生代+老生代分配了2.4xG内存,新生代分了2G,eden区分了1.6g,从实际内存占用看,数组eden区使用了近1.1G的内存,剩下区域基本都是空的。另,demo是在mac上跑的。 /** * -Xms2500m -Xmx2500m -Xcomp -Xmn2g -XX:NewRatio=10 * @author tianmai.fh * @date 2014-03-12 16:55 */ public class ...
        之前做了一个项目,要用到web层的异步化技术,在实际实现中,遇到了很多问题,作为教训简单罗列下。         1、app 容器/J2EE框架对异步的支持         在tomcat5、jboss4的时候,每一个请求都用了一个app容器线程 ...
1、如果用jmx方式监控,不需运行服务器上的jstatd进程 2、直接修改CATALIN_HOME/bin/catalina.sh: JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=[远程机器ip] -Dcom.sun.management.jmxremote.port=[自己设置个端口号] -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"  这里不设置密码,如果要设置 ...
1、数据切分         1.1、mysql中间件研究(Atlas,cobar,TDDL)          1.2、利用 MySQL Proxy 实现数据切分及整合          1.3、基于MySQL分库分表方案简介          1.4、tddl和diamond   2、缓存         2.1、java客户端三种 ...
        最近升级了一次tair(缓存系统)的client jar包——一个完全被重写了的版本,发布到线上的时候,发现某个新上线机房机器cpu占用率比较高,一般50%—100%之间(5核的虚拟机),而另外两个机房机器的cpu使用率却比较低。         1、用top查看是java进程的占用的绝大多数cpu         2、用top H或者top -p PID H查看发现是只有一个线程占用cpu比较多         3、printf %x tid,拿到线程id的16进制表示后jstack pid | grep 0xtid -A 10拿到占用cpu比较多的线程的堆栈:   ...
        先看一个简单的汇编程序: assume cs:code,ss:stack stack segment dw 10 dup('a') stack ends code segment start: mov ax,stack mov ss,ax mov sp,20 mov ax,1 mov cx,4 call s mov ax,4c00h int 21h s: add ax,ax loop s ret code ends end start          自定义一个stack段,然后产生一次方法调用,用 ...
        前两天,缓存系统的一哥们儿在帮忙排查他们超时线程在某个机房占用cpu使用率比较高的情况的时候,用到了 sudo sh -c 'echo w > /proc/sysrq-trigger' ; dmesg 不解,查了下:           dmesg 用来显示系统启动时候的系统信息的,这对系统管理员或者排查问题的时候很重要,参考鸟哥的解释和更详细的资料        sh -c是用sh执行命令          当然,最重要的还是echo w > /proc/sysrq-trigger,查了只知道proc/sysrq-trigger是一个神奇的文件,用ec ...

nginx学习

一、 官方文档:http://nginx.org/cn/docs/ 参考:http://my.oschina.net/duxuefeng/blog/34880 二、2014-01-14 2.1、查看nginx已安装的模块: nginx -V  结果(关于配置项的含义): nginx version: nginx/1.2.7 built by clang 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn) TLS SNI support enabled configure arguments: --pref ...
        如果想将内存空间2000:0,2000:1,2000:2中的数据分别放入al,bl,cl中,可以通过如下方式: mov ax,2000h mov ds,ax mov al,[0] mov bl,[1] mov cl,[2]          如果通过debug工具下a命令在指定地址写入汇编指令,输入后用u查看: -a 0AF3:0100 mov ax,2000 0AF3:0103 mov ds,ax 0AF3:0105 mov al,[0] 0AF3:0108 mov bl,[1] 0AF3:010C mov cl,[2] 0AF3:0110 -u ...
Global site tag (gtag.js) - Google Analytics