小编Max*_*ind的帖子

内存中引用变量和对象的逻辑结构/细节?

假设我们有一个班级:

class Class1
{
   int i = 1;
}
Run Code Online (Sandbox Code Playgroud)

我们有一个变量:

Class1 ob1 = new Class1();
Run Code Online (Sandbox Code Playgroud)
  • 引用本身存储在变量中是否ob1存储了它引用的对象的信息Class1
  • Class1存储堆的哪一部分是否存储了Class1类型的信息?
  • 逻辑上如何看待这些信息?它是一个像application1.Class1这样的字符串或对某些引用类型池的引用?

如果您可以推荐这些信息的来源,我将非常感谢提供它,我在参考书中找不到它.

java memory heap stack

7
推荐指数
1
解决办法
798
查看次数

无法使用 add() 添加 jvmArgs,为什么?

谁能解释为什么第一个示例有效而第二个示例不起作用?

test {
    jvmArgs '-Xdebug',
            '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000'
}

test {
    jvmArgs.add('-Xdebug')
    jvmArgs.add('-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=4000')
}
Run Code Online (Sandbox Code Playgroud)

gradle

6
推荐指数
1
解决办法
748
查看次数

热代码交换不起作用,为什么?

当我试图编写一个简单的一个类控制台应用程序时 - 没有问题.我可以在调试时更改方法中的代码.

问题出在我在Jetty上的网络应用程序.它不起作用,也不仅仅是在通常的调试模式下(在eclipse中按下调试按钮),也不在此处描述的远程调试模式中.我可以调试,但不能改变,即使通常不是静态方法,例如添加sysout,我的意思是我可以更改它但保存后它没有更新,它的工作原理与以前相同.

此外,我与我的同事交谈,它适用于他们,但他们使用的是Spring Tool Suite版本的eclipse,我尝试并得出结论,它在最新版本的STS中可以在通常的调试模式下开箱即用,并且它无法在最新版本的Eclipse.

可能是什么原因?

java eclipse hotswap

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

为什么byte工作比int慢?类实例化

我有这个简单的代码.如果我在MyClass中将int更改为byte,那么由于某种原因它会慢1.5.有什么想法,为什么?

public class Test {

public static void main(String[] args) {
    double start = System.currentTimeMillis();
    MyClass[] arr = new MyClass[10_000_000];

    for (int i = 0; i < arr.length; i++) {
        arr[i] = new MyClass();
    }

    double end = System.currentTimeMillis();
    System.out.println(end-start);
    }
}
class MyClass {
    final public int pole = 50;
    int eshePole;
}
Run Code Online (Sandbox Code Playgroud)

java performance

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

读取路径和压缩偏移图

我试图了解Cassandra的读取路径,但无法理解为什么我们需要压缩偏移量映射。

https://docs.datastax.com/zh-CN/cassandra/3.0/cassandra/dml/dmlAboutReads.html

在此处输入图片说明

分区索引位于磁盘上,并存储所有映射到其偏移量的分区键的索引。

压缩偏移量映射将指针存储到磁盘上可以找到所需分区数据的确切位置。

为什么我们都需要它们?为什么分区索引不能将指针存储到磁盘上的确切位置?

很抱歉,我有一个愚蠢的标题,但这就是stackoverflow要求我的,我不能使用“如果有分区索引,为什么我们需要压缩偏移量映射?”

cassandra

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

dataFrameWriter partitionBy是否会对数据进行洗牌?

我以一种方式分区数据,我只想在另一种方式中分区.所以它基本上会是这样的:

sqlContext.read().parquet("...").write().partitionBy("...").parquet("...")
Run Code Online (Sandbox Code Playgroud)

我想知道这是否会触发随机播放或所有数据都将在本地重新分区,因为在此上下文中,分区仅表示HDFS中的目录,来自同一分区的数据不必在同一节点上写入HDFS中的相同目录.

hadoop partitioning hdfs apache-spark apache-spark-sql

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

为什么close()不能自动在Closeable类上调用?

我不明白.例如,我们在代码中有一个OutputStream类型的变量,当我们停止使用它时,我们应该在它上面调用close(),以及为什么它没有以这种方式实现:GC在它清理时调用close()本身这个变量?

更新: 确定到目前为止我已经得出结论:释放非托管资源不仅仅是释放内存更重要的是我们现在没有内部行为,它可能存在对此资源数量的限制(连接数/处理程序)这就是为什么我们需要尽快释放它们.我对吗?因为如果它完全是关于内存的,那么我不知道为什么GC不能像管理资源那样完成工作.

java garbage-collection unmanaged resource-cleanup

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

在try块中初始化一个变量,一个变通方法?

我有个try-catch街区; 在里面try,我N从控制台读取变量并初始化一个Array[N].我需要Array稍后使用.如果我在try块外使用它,我会收到错误

java variable may not have been initialized.

我明白了,但是我应该怎么做,把整个程序写在try块内,真的吗?这种程序的可读性更差,我使用try的代码exceptions是不可能的.有解决方法吗?我尝试了一个boolean变量,它检查是否存在异常并在稍后的if语句中使用它- 没有结果.

java initialization try-catch

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