草庐IT

java - 设置面板的大小

我有3个面板。一个是包含2个较小面板的主面板。对于主面板,我使用了setPreferredSize(newDimension(350,190));对于较小的左侧面板,我使用了setPreferredSize(newDimension(100,190));对于较小的右侧面板,我使用了setPreferredSize(newDimension(250,190));但较小的面板保持相同尺寸。我怎样才能解决这个问题?这是我在主面板中的代码。importmodel.*;importjava.awt.*;importjavax.swing.*;publicclassPanelextendsJPan

Java 垃圾收集器 : top object classes promoted (by size)?

请告诉我在每次年轻GC事件之后确定提升到老年代的年轻代内存组成的最佳方法是什么?理想情况下,我想知道负责的类名,比如每个“年轻一代->老一代”提升block中80%的堆;例子:我有600M的younggen,每个tenure提升6M;我想知道这个6M是由哪些对象组成的。谢谢。 最佳答案 没有简单的方法可以做到这一点,但是,我最近一直在分析大型java应用程序的内存性能,并且可以分享一些经验。以下是我如何找到哪些对象被提升到老一代:首先,您需要确定“旧/永久”空间中有哪些对象。这基本上就是标准的Java堆分析。为此,我推荐jmap。它

java - 更改 jScrollPane 的一侧并更改大小

我想将JScrollPane的一侧从右侧(默认)更改为左侧。我该怎么做?并且:我想更改JScrollBar的大小,因为它是一个触摸显示器(22"),以便可以轻松滚动。非常感谢! 最佳答案 根据@camickr的放置建议,这里是一个完整的例子importjava.awt.*;importjavax.swing.*;publicclassTest{publicstaticvoidmain(String[]args){JFramejf=newJFrame("Scorllbartest");JPaneljp=newJPanel(){{add

java - 当我们在 Collections.synchronizedMap() 中传递哈希表时会发生什么

今天我在面试中问了一个问题。问题是Collections.synchronizedMap()是用于同步map,默认情况下它不像hashmap那样是线程安全的。他的问题是我们可以在这个方法中传递任何类型的map。那么当我们在该方法中传递哈希表时会产生什么效果,因为哈希表默认情况下是同步的。 最佳答案 map的行为将是相同的,但性能会受到影响,因为每个方法将获取两个同步锁而不是一个。例如,考虑在生成的map上调用方法size()。Collections.SynchronizedMap类中的实现如下所示:publicintsize(){s

Java For-Loop - 终止表达式速度

在我的java程序中,我有一个大致如下所示的for循环:ArrayListmyList=newArrayList();putThingsInList(myList);for(inti=0;i由于列表的大小没有改变,我尝试通过用变量替换循环的终止表达式来加速循环。Myideawas:SincethesizeofanArrayListcanpossiblychangewhileiteratingit,theterminationexpressionhastobeexecutedeachloopcycle.IfIknow(buttheJVMdoesn't),thatitssizewillst

java - 对象大小和 Java 中的锁定性能之间有关系吗?

在著名的JavaConcurrencyinPractice的2.4节中,它说内在锁定方法与显式锁定相比是一个糟糕的设计决策,因为它令人困惑并且“......它迫使JVM实现者在对象大小和锁定性能。”有人可以解释对象大小如何影响锁定性能吗? 最佳答案 既然每个对象都可以被锁定,这意味着每个对象都必须有足够的空间来存储我们在锁定时需要的所有信息。这很不吸引人,因为绝大多数对象永远不会被锁定,所以我们浪费了大量空间。所以在实践中,Hotspot通过使用2bits来记录对象的状态并根据这两位重新使用对象头的其余部分来解决这个问题。然后是整个

java - 当 jar 文件从 URL 作为 InputStream 打开时,JarEntry.getSize() 返回 -1

我正在尝试从JarInputStream读取文件,文件大小返回-1。我正在从URL作为inputStream访问Jar文件。URLConnectioncon=url.openConnection();JarInputStreamjis=newJarInputStream(con.getInputStream());JarEntryje=null;while((je=jis.getNextJarEntry())!=null){htSizes.put(je.getName(),newInteger((int)je.getSize()));if(je.isDirectory()){conti

java swing jframe size 返回比屏幕大的尺寸

在调查我的应用程序中的一些问题时,我发现了一些奇怪的事情。基本上这个SSCCE应该演示问题:publicclassMainFrameextendsJFrame{publicMainFrame(){setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);setExtendedState(JFrame.MAXIMIZED_BOTH);pack();}}publicclassMain{publicstaticvoidmain(String[]args){MainFramemf=newMainFrame();mf.

Java8 Lambda 性能与公共(public)函数

我一直在使用Java8VS对lambda性能进行一些演示测试。Java8公共(public)函数。案例如下:我有一个10人的名单(5男5女)。我想知道哪个女人的年龄在18到25岁之间现在,当我执行这些步骤一百万次时,结果将是:LambdawithForEachtook:395ms(396msusingJUnit)Publicfunctionstook:173ms(169msusingJUnit)LambdawithCollecttook:334ms(335msusingJUnit)现在我没想到lambda的执行时间比常规函数长两倍到六倍。所以,现在我很想知道我是否在这里遗漏了什么。可以

java - 好的设计 : How to pass InputStreams as argument?

我有一个大文件,我正在打开一个FileInputStream。该文件包含一些文件,每个文件都具有相对于开头的偏移量和大小。此外,我有一个解析器应该评估这样一个包含的文件。Filefile=...;//thebigfilelongoffset=1734;//acontainedfile'soffsetlongsize=256;//acontainedfile'ssizeFileInputStreamfis=newFileInputStream(file);fis.skip(offset);parse(fis,size);publicvoidparse(InputStreamis,long