合并 java中的多进程

(1)引言:

     java虚拟机一般都有一个几M的内存消耗预留空间.如果并行运行多个java小应用程序的话,有可能占用了很多不必要的内存空间,造成内存资源的枯竭,比如有时候经常开启一些系统监听进程和服务进程等.

 

(2)解决方案:

 

运行多个应用程序会启动多个java虚拟机进程,这就带来了一定的内存的开销,可以考虑将这些小应用程序合并到在一个java虚拟机进程中运 行,就可以节省一定数量的内存消耗,最终带来性能上的提高.

 

(3)程序代码如下:

Test类的源代码:

public class Test {
public static void main(String[] args) throws IOException{
    System.out.println("Test has started");
    System.in.read();
}
}
 

TestMerger类的源代码:

public class TestMerge {



     public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, NoSuchMethodException, IllegalArgumentException, InvocationTargetException, IOException {

        Class classobject = Class.forName("testrandomaccess.Test");
        Class[] mainParamType = {args.getClass()};
        Method main = classobject.getMethod("main", String[].class);
        Object[] mainParam = {args};
        main.invoke(null, mainParam);
        System.in.read();
    }
}

(4)说明:

    该段程序使用了java中的反射机制 ,找到想运行的类的main方法,在TestMerger的main方法中启动运行,使得两者合并到了同一个java虚拟机中.

 

   运行程序后,我使用windows的进程管理器,发现果然只产生了一个java虚拟机进程java.exe (一共有两个,还有一个是netbean产生的).

 

截图如下:



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值