Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序占用太多内存_Java_Arrays_Sorting_Memory - Fatal编程技术网

Java程序占用太多内存

Java程序占用太多内存,java,arrays,sorting,memory,Java,Arrays,Sorting,Memory,嗨,我对java编程比较陌生。我编写的以下程序似乎占用了大量内存(240 MB左右,正常吗?-我不这么认为!) 请建议一些优化此程序的方法,以减少内存存储 节目- You have 2 sorted array suppose arr1[4] and arr2[3] now we have to combinely sort them using very little extra space(i.e. in-place sort) ex..arr1[4

嗨,我对java编程比较陌生。我编写的以下程序似乎占用了大量内存(240 MB左右,正常吗?-我不这么认为!) 请建议一些优化此程序的方法,以减少内存存储

节目-

 You have 2 sorted array suppose arr1[4] and arr2[3]
          now we have to combinely sort them using very little extra space(i.e. in-place sort)
          ex..arr1[4]={5,8,11,14,16}
          arr[2]={1,7,10}
          then result should be--in arr1[4]={1,5,7,8,10}
          in arr2[3]={11,14,16}
代码-

import java.util.*;

class sort_in_place
{
    public static void main(String args[])
    {
        // input 2 sorted arrays
        int []a = {5,8,11,14,16};
        int []b = {1,7,10};

        System.out.println("initial array: a = "+Arrays.toString(a)+"   b = "+Arrays.toString(b)+"\n");

        // use extra space to store the array 'a' elements.
        int key = 0, i=0; 

        for( i=0; i<a.length ; i++)
        {
             key = a[i];         // store value in temporary variable key.

            // if key is greater than 1st element of array 'b' then exchange their values and sort array 'b'
            if(key > b[0])
            {
                int j = 1;
                a[i] = b[0];
                while(j<b.length && key > b[j])
                {
                    b[j-1] = b[j];
                    j++;
                }
                b[j-1] = key;
            }
        }
        System.out.println("final array: a = "+Arrays.toString(a)+"   b = "+Arrays.toString(b)+"\n");
    }
}
import java.util.*;
类排序\u在\u位置
{
公共静态void main(字符串参数[])
{
//输入2个排序数组
int[]a={5,8,11,14,16};
int[]b={1,7,10};
System.out.println(“初始数组:a=“+Arrays.toString(a)+”b=“+Arrays.toString(b)+”\n”);
//使用额外的空间存储数组“a”元素。
int键=0,i=0;
对于(i=0;ib[0])
{
int j=1;
a[i]=b[0];
while(jb[j])
{
b[j-1]=b[j];
j++;
}
b[j-1]=键;
}
}
System.out.println(“最终数组:a=“+Arrays.toString(a)+”b=“+Arrays.toString(b)+”\n”);
}
}

即使运行一个简单的Helloworld程序,java也需要加载300多个类。我这里的意思是Java初始化需要内存。Java有Xmx和Xms选项来定义内存使用情况。有关更多详细信息,请参阅jvm进程通常使用24MB

您需要记住,Java程序不能独立运行,但需要Java虚拟机平台来处理内存、字节码执行和其他任务。Oracle JVM使用相当多的内存来加速执行,因此即使是很小的程序也会带来很大的启动代价

这就是为什么很少用Java编写小型实用程序的原因


您需要在JVM内部进行测量,以确定是否使用了太多内存。使用探查器进行此操作。JDK中的JVisualVM是一个很好的、免费启动的分析器。

您的程序使用的内存远远少于240 MB的ideone报告。我只是在笔记本上运行它,插入
System.in.read()
main()
的末尾延迟终止,并使用windows任务管理器查看相应的进程。报告的峰值内存使用量9MB


其中大部分将是JVM的基础设施(如即时编译器),与您的程序完全无关。

Define“uses 24M”;你是怎么得出这个数字的?而且这很难理解。。。此外,请编辑您的问题,以便将您的代码放在代码段中。您的性能目标数字是多少,以及(正如Dave所评论的)您使用的确切值是多少(Windows上的性能计数器…)?当你没有好的可测量的目标时,最好不要“优化”某些东西。@DaveNewton看到下面的链接,[link]()占用的内存是245632 kB。@abhey那是~240M,不是24M,FWIW。