为什么我们可以通过Java中的对象引用访问静态变量,如下面的代码?
public class Static {
private static String x = "Static variable";
public String getX() {
return this.x; // Case #1
}
public static void main(String[] args) {
Static member = new Static();
System.out.println(member.x); // Case #2
}
}
Run Code Online (Sandbox Code Playgroud) 我在Windows机器上运行Java程序.我正在尝试获取时区列表及其相关信息.这是完整的程序:
String[] allTimeZones = TimeZone.getAvailableIDs();
Date now = new Date();
for (int i = 0; i < allTimeZones.length; i++) {
TimeZone tz = TimeZone.getTimeZone(allTimeZones[i]);
System.out.format("%s;%s; %f \n",
allTimeZones[i],
tz.getDisplayName(),
(float) (tz.getOffset(now.getTime())/3600000.0));
}
Run Code Online (Sandbox Code Playgroud)
其中一个生成的时区具有以下信息:
America/New_York;东部标准时间; -4.000000
这令人费解.此时,纽约正处于东夏夏令时.所以上面的信息不对.
有谁知道如何让Java生成
America/New_York;东部标准时间; -5.000000
或类似的东西
America/New_York;东夏夏令时; -4.000000
感谢帮助!
问候
我想在Hadoop中将String对象转换为IntWritableObject.任何流程都可用于转换.
谢谢
我一直在使用这里SingleLiveData可以找到的课程.我的问题是:
是SingleLiveData实际上是Android架构组件的一部分?
使用它是个好主意吗?
android android-livedata android-architecture-components mutablelivedata
我正在使用rushrush install并尝试在我从公司的存储库之一克隆的项目中运行。但是,它会失败并抛出以下错误:
The chromium binary is not available for arm64:
If you are on Ubuntu, you can install with:
apt-get install chromium-browser
Run Code Online (Sandbox Code Playgroud)
注意:我使用 iTerm2 终端在 Apple Macbook Pro 上运行所有这些操作,以Monterey作为操作系统,由Apple M1 Pro芯片提供支持。
PS 我尝试在网上寻找答案并找到了这篇文章,但答案似乎对我不起作用。
看看这个Scala代码:
def rec(n: Int) {
if (n > 1) {
val d = n / 2
rec(d)
// if (d > 1) // abort loop
rec(n/d)
}
}
Run Code Online (Sandbox Code Playgroud)
此代码将导致无限循环.由于尾递归优化,我没有得到StackOverflowError.
用jad反编译我得到了这个Java代码:
public void rec(int n)
{
int d;
for(; n > 1; n /= d)
{
int i = n;
d = i / 2;
rec(d);
}
}
Run Code Online (Sandbox Code Playgroud)
在循环的最后一行,该方法调用自身,因此我不理解尾调用位置.谁可以解释这个?
我正在使用以下函数来计算文件的校验和:
public static void generateChecksums(String strInputFile, String strCSVFile) {
ArrayList<String[]> outputList = new ArrayList<String[]>();
try {
MessageDigest m = MessageDigest.getInstance("MD5");
File aFile = new File(strInputFile);
InputStream is = new FileInputStream(aFile);
System.out.println(Calendar.getInstance().getTime().toString() +
" Processing Checksum: " + strInputFile);
double dLength = aFile.length();
try {
is = new DigestInputStream(is, m);
// read stream to EOF as normal...
int nTmp;
double dCount = 0;
String returned_content="";
while ((nTmp = is.read()) != -1) {
dCount++;
if (dCount % 600000000 == 0) {
System.out.println(". …Run Code Online (Sandbox Code Playgroud) 我很想知道这一点,因为这会使它们变得不那么有用.如果是这样,有没有办法让内存在主要GC上仅被"垃圾"弱引用?
我正在尝试理解垃圾收集机制,我正在使用世代算法,我对年轻/老一代的差异有疑问.我读到了开始收集年轻一代的对象GC正在标记它们从GC根源开始找到活的,并且通常将它们复制到幸存者空间,清除年轻一代区域和瞧.
我不知道如果我们从GC根开始并且我们开始经历活动对象,我们在老一代中找不到对象吗?这是否意味着当我们在旧空间中击中一个物体时,我们会停止在那一点跟踪参考或什么?
你好!
我是一名初级 Java 和 Android 开发人员,最近在处理我的应用程序的内存管理方面遇到了麻烦。我将把这篇文章分成几个部分,以使其更清晰易读。
这是一个由几个阶段(级别)组成的游戏。每个阶段都有一个玩家的起点和一个出口,引导玩家进入下一个阶段。每个阶段都有自己的一套障碍。目前,当玩家到达最后阶段(我目前只创建了 4 个)时,他/她会自动回到第一阶段(1 级)。
一个名为GameObject(扩展Android.View)的抽象类定义了玩家和游戏中存在的所有其他对象(障碍物等)的基本结构和行为。所有对象(本质上是视图)都绘制在我创建的自定义视图中(扩展 FrameLayout)。游戏逻辑和游戏循环由一个侧线程(gameThread)处理。这些阶段是通过从 xml 文件中检索元数据来创建的。
除了我的代码中所有可能的内存泄漏(我一直在努力寻找和解决所有这些问题)之外,还有一个与垃圾收集器发生相关的奇怪现象。我将使用图像,而不是用文字来描述它并冒着让您感到困惑的风险。孔子说:“千言万语”。好吧,在这种情况下,我刚刚让您免于阅读 150,000 个单词,因为我下面的 GIF 有 150 帧。
描述:第一张图片代表我的应用程序在第一次加载“stage 1”时的内存使用情况。第二个图像 (GIF) 首先表示第二次加载“阶段 1”时我的应用程序的内存使用时间线(这种情况发生,如前所述,当玩家击败最后一个阶段时),然后是四个强制启动的垃圾收集由我。
您可能已经注意到,这两种情况在内存使用方面存在巨大差异(几乎 50MB)。第一次加载“第一阶段”时,当游戏开始时,应用程序使用 85MB 内存。第二次加载同一个stage的时候,稍晚一点,内存使用量已经是130MB了!这可能是由于我的一些糟糕的编码,因此我不在这里。你有没有注意到,在我强行执行了 2 次(实际上是 4 次,但只有前 2 次重要)垃圾收集之后,内存使用情况又回到了它的“正常状态”(与第一次加载舞台时的内存使用情况相同)?这就是我所说的奇怪现象。
如果垃圾收集器应该从不再被引用的内存对象中删除(或者至少只有弱引用),为什么你在上面看到的“垃圾内存”只有在我强行调用GC和不是关于GC的正常执行?我的意思是,如果我手动启动的垃圾收集可以删除这个“thrash”,那么正常的GC执行也可以删除它。为什么没有发生?
我什至尝试在切换阶段时调用System.gc(),但是,即使垃圾收集发生这种情况,这种“颠簸”内存不会像我手动执行GC那样被删除。我是否遗漏了一些关于垃圾收集器如何工作或 Android 如何实现它的重要信息?
我花了几天时间搜索、研究和修改我的代码,但我找不到为什么会这样。StackOverflow 是我最后的选择。谢谢!
注意:我打算发布一些可能与我的应用程序源代码相关的部分,但由于问题已经太长了,我将在这里停止。如果您觉得需要检查某些代码,请告诉我,我将编辑此问题。
我已经读过: …
java ×7
android ×2
android-architecture-components ×1
apple-m1 ×1
checksum ×1
file-io ×1
hadoop ×1
jvm ×1
macos ×1
memory-leaks ×1
performance ×1
scala ×1
scope ×1
static ×1
timezone ×1