小编Dim*_*ima的帖子

打开的文件太多:打开的文件数量,打开的数量以及JVM打开的数量

我在Java中遇到这个异常:

java.io.FileNotFoundException: (Too many open files) 
Run Code Online (Sandbox Code Playgroud)

我正在寻找消除这个问题的方法.

此错误显然表明JVM已分配了太多句柄,而底层操作系统不会让它拥有更多.要么是因为连接不正确/流连接而导致泄漏.

此过程不间断运行数天,最终抛出异常.在12-14天的正常运行时间后反复发生.

你怎么打这个?有没有办法在JVM中获取已分配句柄的列表或在达到一定数量时跟踪?我喜欢打印它们,看看它是如何生长的.我不能使用分析器,因为它是一个生产系统,并且难以在开发中重现它.有什么建议吗?

我正在监视空闲堆大小并在接近-Xmx中指定总数的1%时引发"警报".我也知道,如果我的线程数达到500以上,那么肯定会失控.现在,有没有办法知道我的JVM 从操作系统分配了太多的句柄,并没有给它们回复,例如套接字,打开的文件等.如果我知道这一点,我会知道在哪里看,什么时候.

java jvm

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

Java中的TimeZone ID

我遇到了java TimeZone的奇怪问题..

调用TimeZone.getDefault()会给出我的本地时区,其ID为"GMT + 02:00".有趣的是,此ID不会出现在TimeZone.getAvailableIDs()提供的列表中.显然我的区域似乎是"Etc/GMT + 2".

我正在尝试使用时区填充组合,但是不可能选择,因为GMT + 02:00不在列表中..任何人都看到了这个问题?有任何想法吗?


更新:

底线是 - 不能依赖ID字符串,必须与偏移量一起使用,因为显示ID可能因系统而异.

java timezone

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

在SWT/JFace RCP应用程序中填充巨大的表

您如何在SWT表中显示大量行?巨大的是20K行,20列.不要问我为什么需要显示那么多数据,这不是重点.关键是如何让它尽可能快地工作,以便最终用户不会感到无聊等待.每行显示一些对象的实例,列是其属性(一些).我想使用JFace内容/标签提供程序模式,但担心它会比直接用数据命中表更慢.这是怎么回事:

    Display.getDefault().asyncExec(new Runnable() {
       public void run() {
           List<MyObject> objects = model.getViewData();
           for(MyObject object: objects){
           TableItem item = new TableItem(table, SWT.NULL);
           item.setImage(0, img1);
           item.setBackground(color1);
               item.setText(0, object.getProperty0());
               item.setText(1, object.getProperty1());
               item.setText(2, object.getProperty2());
               ..... 
            }
       });
Run Code Online (Sandbox Code Playgroud)

在我的计算机上绘制20k记录大约需要20秒.我在Windows中遇到的最大性能问题是由新建表项创建和填充文本时由SWT发送的大量本机窗口消息引起的.我找到了很好的解决方法 - 在填充之前隐藏表,然后在完成后显示它.只需在循环之前调用table.setVisible(false),在循环之后调用table.setVisible(true)就可以了 - 速度上升了六七倍!

我想加快速度.你会建议什么?另外,我想知道隐藏小部件的这个技巧如何在SWT(又称Linux)的非Windows实现上起作用?

java swt jface eclipse-rcp

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

适用于iOS的Cordova版本 - 未找到配置文件

我遇到了基于MacOS的cordova.这些版本适用于Android,但构建iOS真的很痛苦.这是发生的事情:

>cordova build ios --device --debug --buildConfig ./build.json
.....
Check dependencies
No profile matching '******' found:  Xcode couldn't find a profile matching '******'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.2'
Run Code Online (Sandbox Code Playgroud)

这是一系列最新版本的全新安装(node,cordova,cordova-ios,XCode等).我根据开发人员ID,团队,证书和配置文件设置了所有内容.所有这些工件都是有效的,我肯定知道,因为我正在将这个版本从英特尔XDK移动到我当地的Mac计算机上.这是我的build.json:

{
    "ios": {
        "debug": {
            "provisioningProfile": "******",
            "developmentTeam": "******",
            "packageType": "development"
        },
        "release": {
            "provisioningProfile": "******",
            "developmentTeam": "*******",
            "packageType": …
Run Code Online (Sandbox Code Playgroud)

xcode ios cordova

10
推荐指数
2
解决办法
3142
查看次数

寻找有关JIDE的反馈

我即将开始开发相当大的基于Java的桌面应用程序.在查看JIDE组件和框架之后,它似乎是一个很好的解决方案.我想听听使用这些产品的人的意见.他们有多可靠?什么是学习曲线?优点和缺点?

java swing jide

8
推荐指数
3
解决办法
3819
查看次数

logback是否支持log4j appenders?

为log4j(扩展AppenderSkeleton)创建的自定义appender可以与新的logback框架一起使用吗?我知道logback有自己的一组类似于log4j的appender,但是这可以重用现有的吗?怎么样?

logging log4j logback

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

MongoDB - 单个巨大的原始数据集合.分裂与否?

我们从大量主机收集和存储仪器数据.我们的存储是MongoDB - 带有副本的几个分片.一切都存储在一个大型集合中.我们插入的每个文档都是基于时间的观察,具有一些属性(测量).时间戳是最重要的属性,因为所有查询至少都基于时间.文档永远不会更新,因此它是一个纯粹的写入查找模型.现在它与几十亿个文档合作得很好.

现在,

我们希望增长一点并持有长达12个月的数据,这可能相当于一个可怕的万亿+观察(文件).如果将所有东西都倾倒在一个怪异的集合中是我最好的选择,或者有一种更聪明的方法可以解决这个问题.我的意思是更聪明 - 使用更少的硬件,同时仍然提供快速插入和(重要的)快速查询.所以我考虑将大型集合分成更小的部分,希望获得索引,插入和查询速度的内存.

我查看了分片,但是时间戳分片听起来像个坏主意,因为所有写入都将进入一个节点,取消了分片的好处.插入率非常高,因此我们需要分片才能在此处正常工作.我还考虑过每个月创建一个新的集合,然后为用户查询选择一个相关的集合.超过12个月的馆藏将被删除或存档.还可以选择每月创建一个全新的数据库,并进行类似的轮换.其他选择?或许一个大收集成长真正的大的选择吗?

请在类似应用中分享您的经验和注意事项.

mongodb

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

iOS 13 Beta WebKit中断了对Cookie的支持

我有一个可以正常工作的基于Cordova的应用程序,目前具有相对较大的用户群。到目前为止,除了没有问题这一个苹果公司将不会解决。没关系,我们创建了丑陋的变通办法,只是为了继续前进...

但是,在这里谈到iOS的13(测试版8),我们学习本新闻稿中的WebKit不将Cookie传回服务器的所有。没有一次,不是一开始就-永远不会。iOS 13的发布要提前几周,当所有用户升级到它并且我们的应用停止工作时,我根本不知道该怎么办...

我们使用cookie进行会话管理,没什么花哨的,基于经典的旧码头的后端。我针对首次使用问题所做的解决方法是,在每个请求的URL上附加jsessionid参数,然后在服务器端将其剥离,转换为cookie并沿链进一步发送。我不知道假设WebKit停止发送回cookie一直使用它是否安全。以下是一些相关的待解决的错误,但Apple不太可能查看它们:

有人遇到类似的问题吗?你如何解决?

webkit cordova wkwebview ios13

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

完整 GC(堆检查启动 GC)

我正在努力寻找我们生产 JVM 上的“Full GC”。每天午夜左右,STW 无明显原因地发生,持续 10-11 秒,相当致命。这是GC日志:

Java HotSpot(TM) 64-Bit Server VM (25.131-b11) for windows-amd64 JRE (1.8.0_131-b11), built on Mar 15 2017 01:23:53 by "java_re" with MS VC++ 10.0 (VS2010)
Memory: 4k page, physical 16584284k(13074876k free), swap 23137624k(18439472k free)
CommandLine flags: -XX:GCLogFileSize=1024000 -XX:InitialHeapSize=11811160064 -XX:+ManagementServer -XX:MaxHeapSize=11811160064 -XX:NumberOfGCLogFiles=10 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseGCLogFileRotation -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC 
...
2020-01-17T00:00:04.411+0200: 113734.053: [GC (Heap Inspection Initiated GC) [PSYoungGen: 522474K->146371K(3387904K)] 6946079K->6573263K(11077632K), 0.1786961 secs] [Times: user=0.67 sys=0.02, real=0.18 secs] 
2020-01-17T00:00:04.592+0200: 113734.233: [Full GC (Heap Inspection Initiated …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm

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

MongoDB java 驱动程序 - 大量停放线程

从长远来看,我发现 MongoDB Java 驱动程序 (v3.0.3) 堆积了大量线程。所有这些线程都是服务器监控线程,全部停放等待:

cluster-ClusterId{value='562233d1b26c940820028340', description='null'}-192.168.0.2:27017
    sun.misc.Unsafe.park(Native Method)
    java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
    java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
    com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.waitForSignalOrTimeout(DefaultServerMonitor.java:237)
    com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.waitForNext(DefaultServerMonitor.java:218)
    com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:167)
    java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

目前约有 250 人。我认为不需要很多线程来监视与单个数据库主机的连接。我显然做错了什么......,但据我所知,当从驱动程序 v2 移动到 v3 时,我们没有做任何设置更改。可能是驱动程序的错误?有任何想法吗?

mongodb mongodb-java

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