相关疑难解决方法(0)

System.gc()什么时候做什么

我知道垃圾收集在Java中是自动化的.但我明白,如果你System.gc()在代码中编写,Java VM可能会或可能不会在运行时决定在那时进行垃圾收集.这是如何工作的?基于什么基础/参数,VM在看到GC时决定做(或不做)GC System.gc()?是否有可能的例子在这种情况下将它放在代码中是个好主意?

java garbage-collection

113
推荐指数
8
解决办法
14万
查看次数

.Net与Java垃圾收集器

有谁知道Java和.Net垃圾收集器之间的主要区别?网络搜索没有透露太多,这是一个测试中出现的问题.

c# java garbage-collection

62
推荐指数
4
解决办法
2万
查看次数

垃圾收集机制如何运作?

在一个非专业术语中,垃圾收集机制如何工作?

如何识别对象是否可用于垃圾回收?

另外,Reference Counting, Mark and Sweep, Copying, TrainGC算法的意思是什么?

garbage-collection memory-management

23
推荐指数
3
解决办法
9677
查看次数

不可变对象如何帮助减少因垃圾收集而产生的开销?

我对于新手,我已经从第一两个答案阅读有关垃圾收集在这里.

现在证明使用不可变对象,即使程序员必须创建新对象,与使用现有对象(在多线程应用程序中)相比,本教程说,对象创建的成本是由内存开销的减少弥补的.由于垃圾收集,并且消除了保护可变对象免受线程干扰和内存一致性错误的代码:

对象创建的影响经常被高估,并且可以通过与不可变对象相关联的一些效率来抵消.这些包括由于垃圾收集而减少的开销,以及消除保护可变对象免于损坏所需的代码.

问题是如何?垃圾收集与物体的可变性或不变性有什么关系?

java multithreading garbage-collection

21
推荐指数
3
解决办法
4197
查看次数

Spring Boot消耗太多的RAM

我在春季启动中创建了一些服务,我有11个胖jar,并将它们部署在docker容器中,我的怀疑是每个jar都消耗了1到1.5 GB的RAM,而没有任何使用,我通过运行以下命令检查RAM:

docker stats containername
Run Code Online (Sandbox Code Playgroud)

起初我以为是Java容器,所以我尝试更改为使用alpine的容器,但没有任何变化,所以我认为唯一的问题是我的jar。有没有办法更改jar正在使用的RAM?还是这种行为是正常的,因为每个jar都有一个嵌入式的tomcat?或者将一些罐子放在一起作为战争来部署,并在一组“罐子”中仅使用一个tomcat更好?有人可以分享他/她的经验吗?,

提前致谢。

docker spring-boot

7
推荐指数
2
解决办法
7768
查看次数

当我从Java中删除ArrayList中的1个对象时.接下来发生什么?

我有一个像这样简单的arraylist:..

ArrayList<SP> sps = new ArrayList<SP>();
sps.add(new SP("1"));
sps.add(new SP("2"));
sps.add(new SP("3"));
Run Code Online (Sandbox Code Playgroud)

..当我从该列表中删除1个对象时.接下来发生什么?该列表只删除该对象的引用,然后对象自动释放该内存区域(因为没有引用该对象的内存)或该对象是由该列表直接从该内存区域释放的?

P/s:抱歉我的英语不好.

java memory-management reference arraylist internal

5
推荐指数
1
解决办法
5186
查看次数

Kotlin有垃圾收集器吗?如果是这样,它基于哪种算法?

我在Kotlin做一个学校项目,需要知道它是如何处理垃圾的.它的垃圾收集器中是否与Java类似?

garbage-collection jvm garbage kotlin

4
推荐指数
2
解决办法
3534
查看次数

如何避免 Mule 应用程序中的内存泄漏?

为了避免Mule 应用程序中的内存泄漏,是否必须考虑一些特殊的事情?

如何避免 Mule 应用程序中的内存泄漏?

例如; 我们真的必须删除流变量吗?哪些内容必须由 Mule 应用程序的开发人员显式完成,哪些内容由Mule 运行时和JVM GC (自动)完成?

memory-leaks mule anypoint-studio mule-esb

3
推荐指数
1
解决办法
9621
查看次数

Java的垃圾收集器如何工作?

可能重复:
Java中的垃圾收集器是什么?

在我的程序中,我有一个功能设置,在一定时间后调用另一个函数(我们将其设置为20分钟,用于本例)ScheduledThreadPoolExecutor.

被调用的函数,我们会说是removeStat(Character char).在该方法中,它引用了侧面字符中的函数(我们会说char.getClient().getWriter()).我们假设在20分钟的等待期间,问题中的角色会退出并且不再需要他们的角色实例.

Java垃圾收集器会Character在那段时间内删除该类,导致char in removeStat为null,还是知道等到调用完成后?

java garbage-collection

2
推荐指数
1
解决办法
1841
查看次数

想要创建一个servlet,它将基于guid文件名将发布的数据保存到文件中

所以我将我的java应用程序推送到服务器,非常兴奋.

现在我想测试一下,如何将发布的数据保存到我的servlet文件中,文件名应该是一个唯一的guid.

到目前为止我有这个:

public class TestServlet extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
            throws javax.servlet.ServletException, IOException {

        PrintWriter printWriter = response.getWriter();

        printWriter.print("hello, world from testservlet!");


    }
}
Run Code Online (Sandbox Code Playgroud)

因此,假设http发布数据(比如大约50K)将被发布到字段"有效负载",我如何获取发布的文本,并将其保存到文件中,文件名为GUID.

java有一个构造来清理一个打开的文件,比如在c#中:

using(var file = new ....)
{
  // write to file
}
Run Code Online (Sandbox Code Playgroud)

这会关闭连接并清理内存等.

另外,我是否需要为tomcat设置特殊权限才能保存此文件?

我现在默认设置(只是在VPS上玩)使用ubuntu 11,安装tomcat6.

谢谢.

java file-io tomcat servlets

0
推荐指数
1
解决办法
6761
查看次数

ArrayList.clear()是否会使recurcively内的所有对象无效?

假设我有这样一堂课:

class C
{
   int a, b;
   ArrayList<int> c = new ArrayList();
};
Run Code Online (Sandbox Code Playgroud)

和这样的集合:

ArrayList<ArrayList<C>> MyList = new ArrayList<ArrayList<C>>();
Run Code Online (Sandbox Code Playgroud)

调用MyList.clear()会取消对MyList中每个ArrayList的所有引用以及MyList中每个ArrayList内的任何其他对象吗?那么,更准确地说,Cc类中的所有元素都将被取消以及Ca和Cb吗?

java arraylist

0
推荐指数
1
解决办法
443
查看次数

这个子集算法的空间复杂度实际上是 O(n) 吗?

这是破解编码面试5问题9.4次
的问题:写返回一组的所有子集的方法。

这是我在 Java 中的解决方案。(测试它,它有效!!!)

public static List<Set<Integer>> subsets(Set<Integer> s) {
    Queue<Integer> copyToProtectData  = new LinkedList<Integer>();
    for(int member: s) {
        copyToProtectData.add(member);
    }
    List<Set<Integer>> subsets = new ArrayList<Set<Integer>>();
    generateSubsets(copyToProtectData, subsets, new HashSet<Integer>());
    return subsets;
}
private static void generateSubsets(Queue<Integer> s, 
        List<Set<Integer>> subsets, Set<Integer> hashSet) {
    if(s.isEmpty()) {
        subsets.add(hashSet);
    } else {
        int member = s.remove();
        Set<Integer> copy = new HashSet<Integer>();
        for(int i:hashSet) {
            copy.add(i);
        }
        hashSet.add(member);
        Queue<Integer> queueCopy = new LinkedList<Integer>();
        for(int i:s){
            queueCopy.add(i);
        }
        generateSubsets(s, subsets, hashSet);
        generateSubsets(queueCopy, …
Run Code Online (Sandbox Code Playgroud)

java algorithm recursion time-complexity space-complexity

0
推荐指数
1
解决办法
1472
查看次数