10 2013 档案
摘要:代码如下:public class CommonUtils { //高位在前,低位在后 public static byte[] int2bytes(int num){ byte[] result = new byte[4]; result[0] = (byte)((num >>> 24) & 0xff);//说明一 result[1] = (byte)((num >>> 16)& 0xff ); result[2] = (byte)((num >>> 8) & 0xff ); result[3] = (byte)(
阅读全文
摘要:简单来说,对象内存分配主要是在堆中分配。但是分配的规则并不是固定的,取决于使用的收集器组合以及JVM内存相关参数的设定以下介绍几条基本规则(使用的ParNew+Serial Old收集器组合):一,对象优先在新生代Eden区分配//-XX:+UseParNewGC -Xms20m -Xmx20m -Xmn10m -XX:+PrintHeapAtGC -XX:+PrintGCDetailspublic class test { static int mb = 1024*1024; public static void main(String[] args) { byte[] b1 = new..
阅读全文
摘要:当前商业虚拟机的垃圾收集都采用“分代收集”算法,即根据对象生命周期的不同,将内存划分几块,一般为新生代和老年代,不同的代根据其特点使用最合适的垃圾收集算法一,标记-清除算法:该算法分为“标记”、“清除”2个过程,首先标记需要清除的对象,然后统一清除这个算法有2个明显的缺点:1,标记和清除的效率都不高2,垃圾收集后,内存碎片化严重二,复制算法:将内存分大小相同的2块,每次只使用其中的一块。当一块中的内存耗光,则将还活着的对象复制到另一块,并清空原先的那一块这个算法的优缺点都比较明显优点是实现比较简单,效率也很高,而且没有内存碎片化的问题缺点是最大的可用内存变为原先的二分之一,估计这谁也受不了新生
阅读全文
摘要:相对于非阻塞通信的复杂性,通常客户端并不需要使用非阻塞通信以提高性能,故这里只有服务端使用非阻塞通信方式实现客户端:package com.test.client;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.InetAddress;import java.net.InetSocketAddress;import java.nio.channels.SocketChannel;import org.apache.log4j.Log
阅读全文