小编ouf*_*lak的帖子

java.io.PrintStream.write(PrintStream.java:480)中的Java StackOverflowError并且没有进一步的堆栈跟踪

我正在运行一个由另一个人编写的Java程序,该程序的数据比最初为该程序设计的数据多,例如输入文件的10倍,大致是二次运行时.我遇到了不同的问题,现在的目的是一点一点地解决它们,并感谢我能得到的所有帮助 - 非常感谢您的建议!

在执行期间,当已经打印了大量输出(重定向到文件)时,我得到以下输出:

Exception in thread "main" java.lang.StackOverflowError  
        at java.io.PrintStream.write(PrintStream.java:480)  
        [...]  
        at java.io.PrintStream.write(PrintStream.java:480)
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪是第一件令我困惑的事情,因为它是一次又一次地重复同一条线.此外,它无意在代码或执行中出现问题.

我的想法/研究

  • 的StackOverflowError
    • 可能表示内存太少.使用-Xmx110G标志,我提供了110 G内存并在执行时对其进行监控,仅使用了大约32 G.所以这可能不是问题所在.
    • 由于编程错误导致无限循环,可能会抛出.但是,我真的无法检查这个,因为我对代码不够熟悉,堆栈跟踪无法帮助我在代码中找到问题的位置.
    • [假设]可能是由于输出的写入比执行和新的打印/写入调用慢.不过,为什么没有进一步的堆栈跟踪?我该怎么检查并解决这个问题?
  • 为PrintStream

    • 搜索"PrintStream"后只搜索代码片段

      // reset output stream to suppress the annoying output of the Apache batik library. Gets reset after lib call.  
      OutputStream tmp=System.out;  
      System.setOut(new PrintStream(new org.apache.commons.io.output.NullOutputStream()));  
      drawRes.g2d.stream(new FileWriter(svgFilePath), false);      
      System.setOut(new PrintStream(tmp));  
      
      Run Code Online (Sandbox Code Playgroud)
    • [假设]写入void/null不起作用
    • [解决方法]如果跳过输出流的更改并且只是"生效"并且创建了大输出,则程序似乎运行(进入其他问题,但这是另一种情况).任何想法为什么会这样?

征求意见
如果您对正在进行的工作有什么建议,那么Java代码具体做什么,请帮助我理解它.特别是堆栈跟踪让我感到沮丧,因为它没有提供开始修复的地方.我也很感谢有关如何解决此问题,获取堆栈跟踪,修复代码以避免StackOverflow等的一般方法.

一些系统环境事实

  • Linux机器
  • 128 G内存
  • Java的

    openjdk version "1.8.0_121"  
    OpenJDK Runtime Environment (IcedTea 3.3.0) (suse-28.1-x86_64)  
    OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) …
    Run Code Online (Sandbox Code Playgroud)

java stack-overflow outputstream stack-trace

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

React Router v5:history.push() 更改地址栏,但不更改页面

如果在我的 React 应用程序中登录成功,我将尝试将用户重定向到新页面。重定向是从不是组件的 auth 服务调用的。为了访问组件外部的历史对象,我按照React Router FAQ中的示例进行操作。但是,当我致电 时history.push('/pageafterlogin'),页面不会更改,并且我仍保留在登录页面上(根据我的Switch预期最终会出现在该页404面上)。地址栏中的 URL 确实更改为/pageafterlogin登录页面,但页面未更改。控制台中没有出现任何错误,也没有任何其他信息表明我的代码不起作用。

我怎样才能history.push()更改用户所在的页面?

// /src/history.js
import { createBrowserHistory } from 'history';
export default createBrowserHistory();

// /src/App.js
...
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import history from './history';

function App() {
    return (
        <Router history={history}>
            <Switch>
                <Route path="/" exact component={HomePage} />
                <Route path="/login" exact render={() => <FormWrapper><LoginForm /></FormWrapper>} />
                <Route render={() => <h1>404: not found</h1>} />
            </Switch> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

将日志消息从 datadog 发送到 Slack 通道

是否可以将Datadog中的日志消息(日志消息中的内容)发送到松弛通道之一?我尝试过使用显示器。但如果日志消息超过提供的阈值级别,它只会提供警报。我需要将确切的日志消息发送到 Slack 通道。

logging datadog slack

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

如何设置 Antd Divider 颜色

我尝试过设置样式颜色、背景颜色和边框颜色。一切都不起作用,分隔线仍然使用默认颜色。有小费吗?

import {Divider } from "antd";

<Divider style={{ color: "#d8d8d8" }}>or</Divider>
<Divider style={{ backgroundColor: "#d8d8d8" }}>or</Divider>
<Divider style={{ borderColor: "#d8d8d8" }}>or</Divider>
Run Code Online (Sandbox Code Playgroud)

jsx reactjs antd

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

我必须使用什么驱动程序才能在 Edge Chromium 浏览器上用 C# 运行 selenium 测试?

我正在尝试使用 Edge 浏览器在 C# 中启动一个简单的 selenium 测试,但我不能。指示我的错误如下:

OpenQA.Selenium.DriverServiceNotFoundException: '文件 C:\Selenium\Drivers\MicrosoftWebDriver.exe 不存在。可以从以下网址下载该驱动程序:http://go.microsoft.com/fwlink/ ?LinkId=619687

这是给我错误的代码行:driver = new EdgeDriver ("C:\\Selenium\\Drivers");

在路径 C:\Selenium\Drivers 中我有以下驱动程序:msedgedriver.exe

从页面下载:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

该驱动程序与我的 Edge 版本相对应:Microsoft Edge 是最新的。版本80.0.361.62(官方编译)(64位)

我究竟做错了什么?我的错误是什么?我该如何解决?

c# automated-tests selenium-webdriver microsoft-edge

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

WPF应用程序行为取决于Windows用户访问级别

我开发了一个WPF应用程序(ef,MVVM),并意识到应用程序的性能取决于登录的Windows用户.我在具有2个用户的Windows 7 POSready计算机上进行了测试.

对于具有管理员权限的用户,该应用程序运行良好.但如果我以普通用户身份登录,性能就会下降.我不知道为什么会这样.有人知道这个吗?

wpf performance

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

如何平滑WPF渐变?

我想在我的wpf应用程序中最好地渲染RadialGradientBrush.这是我的XAML代码:

<Grid>
    <Grid.Background>
        <RadialGradientBrush>
            <GradientStop Color="#FF3A3A3A" Offset="1"/>
            <GradientStop Color="#FF323232"/>
        </RadialGradientBrush>
    </Grid.Background>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这是WPF渲染:

WPF图像

我在Photoshop渲染中更改了这个(在渐变中检查抖动):

Photoshop图片

c# wpf gradient render

6
推荐指数
0
解决办法
261
查看次数

Swift:NSDateFormatter dateFromString在设备上返回nil

我在Obj-c中找到了可以解决我问题的方法,但是我无法翻译代码,因此我需要一个Swift解决方案。

我正在从JSON文件中解析一些数据,但在检索日期时遇到问题;这是代码:

println(data) // "Fri, 16 Jan 2015 11:49:00 +0100"

var dateFormatter           = NSDateFormatter()
dateFormatter.dateFormat    = "EEE, dd LLL yyyy HH:mm:ss ZZZ"
let formattedDate           = dateFormatter.dateFromString(data)

println(formattedDate) // returns 'Optional(2015-01-16 11:49:00 +0100)' if running on an iOs Simulator
                       // returns 'nil' if runnig on an iPhone
Run Code Online (Sandbox Code Playgroud)

就像我在代码注释中编写的一样,如果我在iOs Simulator或操场上运行日期,则可以正确获取日期的可选类型,但是如果它在iPhone上运行,则显示nil。

有人可以帮忙吗?

nsdateformatter ios swift

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

在容器视图中刷新单个视图控制器

我需要通过向容器视图传递变量值来帮助刷新容器视图中的单个视图控制器。我有一个故事板,其中包含一个带有容器视图的视图控制器。见下图:

容器视图

公司用户的总销售额正在由选择器视图控制器更改,这意味着它将针对不同的数据刷新我的视图控制器。

现在,我DashbordVC使用以下代码以编程方式在此容器视图中添加我的视图控制器:

var previousViewController : UIViewController?
var selectedIndex : Int = 0

// TopSalesVC - Instantiate ViewController
private lazy var topSalesVC: TopSalesVC = {
    var vc = TopSalesVC.viewController()
    self.addChildViewController(vc)
    return vc
}()    

// Methods
override func viewDidLoad() {
    super.viewDidLoad()
    self.setupView()
}

//------------------------------------------------------------------------------

func setupView() {

    self.previousViewController = self.topSalesVC
    self.add(asChildViewController: self.topSalesVC)
}

//------------------------------------------------------------------------------

private func add(asChildViewController viewController: UIViewController) {

    self.addChildViewController(viewController)
    self.containerView.addSubview(viewController.view)

    viewController.view.frame = self.containerView.bounds
    viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    viewController.didMove(toParentViewController: self)
}

//------------------------------------------------------------------------------

private func remove(asChildViewController viewController: UIViewController) …
Run Code Online (Sandbox Code Playgroud)

ios uicontainerview swift

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

Flutter Firestore 在离线时需要很长时间检索数据

我在颤振应用程序中使用 Firestore。每次用户启动应用程序时,它都会从 Firestore Cloud 检索一些数据。

QuerySnapshot dataSnapshot = await Firestore.instance
        .collection('/data')
        .getDocuments();
Run Code Online (Sandbox Code Playgroud)

当用户第一次打开应用程序时,他需要在线连接,获取数据,正如 Firebase 文档所说

对于 Android 和 iOS,默认启用离线持久化。要禁用持久性,请将 PersistenceEnabled 选项设置为 false。

因此,它应该保存应用程序之前读取过的数据,以便在设备离线时检索它;因此用户可以随时使用已读取的相同数据访问应用程序。

问题是:在设备离线时检索数据需要很长时间,使用相同的代码并且没有任何更改!。

我尝试配置需要多少时间?离线时,大约需要 8 分 40 秒。但在线时,只需 10 秒,甚至可能更短。

那么我该如何解决这个问题呢?

============

更新

我设法获得了有关此问题的更多日志,这花费了很多时间,并将使用离线保存的数据启动应用程序,它会打印此日志

This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.

然后以 3 秒为例(时间不多)并继续下一个作品。

我也确实在GitHub 中打开了一个新问题。

有没有办法限制它花费的时间?

dart firebase flutter google-cloud-firestore

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