相关疑难解决方法(0)

如何在Java中强制进行垃圾收集?

是否有可能在Java中强制进行垃圾收集,即使它很棘手?我知道System.gc();,Runtime.gc();但他们只建议做GC.我怎么强迫GC?

java garbage-collection

208
推荐指数
11
解决办法
31万
查看次数

jvisualvm去哪儿了?

我正在运行Mac OSX Snow Leopard.

我总是使用Mac OSX的常规软件更新功能更新Java.

我过去使用过Java jvisualvm工具取得了巨大的成功.

今天早上我像往常一样输入jvisualvm命令行.我收到以下错误:

 $ jvisualvm
 Unable to locate an executable at "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/jvisualvm" (-1)
Run Code Online (Sandbox Code Playgroud)

所有的其他Java工具(java,javac,jps等),工作得很好.

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin确实不包含jvisualvm(突然间).

/usr/libexec/java_home 收益率:

$ /usr/libexec/java_home
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

WTF?

java macos

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

如何缩放BufferedImage

在javadocs之后,我试图扩展一个BufferedImage没有成功的是我的代码:

BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded);
Graphics2D grph = image.createGraphics();
grph.scale(2.0, 2.0);
grph.dispose();
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么它不起作用,有什么帮助吗?

java bufferedimage image image-processing image-scaling

42
推荐指数
6
解决办法
10万
查看次数

在运行时删除顶级容器

不幸的是,看起来这个最近封闭的问题还不太清楚.这是典型的输出:

run:
    Trying to Remove JDialog
    Remove Cycle Done :-)
    Checking if still exists any of TopLayoutContainers
JFrame
JDialog
    Will Try Remove Dialog again, CycleNo. 1
 -----------------------------------------------------------
    Trying to Remove JDialog
    Remove Cycle Done :-)
    Checking if still exists any of TopLayoutContainers
JFrame
JDialog
    Will Try Remove Dialog again, CycleNo. 2
 -----------------------------------------------------------
    Trying to Remove JDialog
    Remove Cycle Done :-)
    Checking if still exists any of TopLayoutContainers
JFrame
JDialog
    Will Try Remove Dialog again, CycleNo. 3
 -----------------------------------------------------------
    Trying …
Run Code Online (Sandbox Code Playgroud)

java swing runtime jdialog

18
推荐指数
4
解决办法
9582
查看次数

HashMap或TreeMap或LinkedHashMap哪一个迭代更快?

我有一个Map在应用程序启动期间填满的.在执行应用程序期间,它不会在以后更改.之后,此映射仅用于迭代其中的所有元素.Map我应该选择哪种具体实施方案?HashMapTreeMapLinkedHashMap
更新广告
订单无关紧要.唯一重要的是快速迭代所有元素(比如6000个元素).

java iteration collections

16
推荐指数
3
解决办法
2万
查看次数

不移动鼠标光标时Java动画会断断续续

我有一个非常简单的动画,一个大字体的文本连续(逐个像素)向左移动.首先将文本转换为图像,然后启动计时器任务,重复(每10-20毫秒)将图像的x坐标递减1,然后执行重绘().

该程序在某些系统上显示出奇怪的行为.在我的电脑上使用nVidia卡,它运行顺畅.在我的Vaio笔记本电脑上,在BeagleBoneBlack和朋友的Mac上,它会严重破坏.它似乎暂停一段时间,然后跳到左边大约10个像素,再次暂停,依此类推.

我是什么树桩在这些系统上动画的事实,只有当你不触摸鼠标口吃.只要您在窗口内移动鼠标光标,无论速度有多慢,或者拖动窗口本身,动画都会非常流畅!

任何人都能解释一下吗?这是程序:

import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;

class Textimg extends JComponent
{
    String      str;
    Font        font;
    int         x = 0;
    final int   ytext = 136;
    Image       img;

    public Textimg(String s)
    {
        str = s;
        font = new Font("Noserif", Font.PLAIN, 96);
        setLayout(null);
    }

    protected void paintComponent(Graphics g)
    {
        if (img == null)
        {
            img = createImage(4800, 272);
            Graphics gr = img.getGraphics();

            gr.setFont(font);
            gr.setColor(Color.BLACK);
            gr.fillRect(0, 0, 4800, 272);
            gr.setColor(new Color(135, 175, …
Run Code Online (Sandbox Code Playgroud)

java animation swing

16
推荐指数
2
解决办法
2333
查看次数

实施Bresenham的圆绘制算法

我编写了Bresenham的圆绘制算法的实现.这种算法利用了圆的高度对称性(它只计算第一个八分圆的点,并利用对称性绘制其他点).因此我期待它非常快.图形编程黑皮书,第35章标题为" Bresenham快速,快速好 ",虽然它是关于线条绘制算法,但我可以合理地期望圆形绘制算法也很快(因为原理是相同).

这是我的java,swing实现

public static void drawBresenhamsCircle(int r, double width, double height, Graphics g) {
    int x,y,d;
    y = r;
    x = 0;

    drawPoint(x, y, width, height,g);
    d = (3-2*(int)r);
    while (x <= y) {
        if (d <= 0) {
            d = d + (4*x + 6);
        } else {
            d = d + 4*(x-y) + 10;
            y--;
        }
        x++;

        drawPoint(x, y, width, height,g);

        drawPoint(-x, y, width, height,g);
        drawPoint(x, -y, width, height,g);

        drawPoint(-x, -y, width, height,g);
        drawPoint(y, …
Run Code Online (Sandbox Code Playgroud)

java algorithm graphics swing bresenham

13
推荐指数
2
解决办法
4093
查看次数

java用完了内存问题

我有一个运行在带有linux 64bit操作系统的amazon-ec2-m1.large实例上的jar文件.我在不同时间后耗尽内存,通常在2-4之间,尽管在我的上一次日志写入(在创建错误文件之前),我看到以下内容:

Memory - 
     totalHeapSize: 264 MB, 
     maxHeapSize: 1656 MB, 
     freeHeapSize: 220 MB
Run Code Online (Sandbox Code Playgroud)

当我从jar开始看到内存耗尽时 - 所有值都相同,freeHeapSize介于200-230 MB之间(我每隔30秒检查一次并执行System.gc())

在hs_err_pid2250.log中写:

    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Cannot create GC thread. Out of system resources.
    # Possible reasons:
    #   The system is out of physical RAM or swap space
    #   In 32 bit mode, the process size limit was hit
    # Possible solutions:
    #   Reduce memory load on the system
    #   Increase physical memory or …
Run Code Online (Sandbox Code Playgroud)

java memory memory-management

11
推荐指数
2
解决办法
3万
查看次数

为什么在JFrame上绘制的速度比在JPanel上慢得多?

我的问题是,与直接在JFrame上绘制相比,绘制JPanel时,相同的swing-custom-painting例程快16倍?它只是双缓冲吗?它肯定不是吗?

背景:当JFrame未被遮挡时(特别是仅被部分遮挡),我遇到了自定义绘画未被刷新的问题.搜索完SO后,我决定咬一口,弄清楚如何将JPanel的子类连接成一个bluddy-NetBeans-form-designer形式.

对于处于相同情况的任何人:在NetBeans中,您需要创建一个新的标准类(不是JPanel表单),恰好可以扩展JPanel,并手动编写其中的所有内容(没有GUI设计器,就像好日子一样,叹).然后在表单中添加标准JPanel,设置它的大小; 然后右键单击并选择"自定义代码"并在组合框中选择"自定义创建"...在其中创建新的javax.swing.JPanel替换其子类.

所以...这使我能够"正确地"并在组件上绘画,而不是直接在表格上绘画.此外,面板 - 键 - 听众是一个更加整洁的解决方案,而不是高举框架键事件调度员.

无论如何,现在分析器说完全相同的自定义绘图代码在JPanel的paintComponent()中执行的速度比JFrame的paint()快了近16倍......我想知道是否有人可以解释原因.

先感谢您.基思.


编辑:这个问题是基于MISINTERPRETED METRICS.探查器不包含/报告AWT-EventQueue线程中的JPanel的paintComponent()方法,其中 - 我的基线配置文件确实包含JFrame的paint().在问一个愚蠢的问题之前我应该​​仔细看一下.我的错.

java swing custom-painting

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

如何在使用递归逐步执行大型目录结构时管理Java内存

我有一个递归方法,遍历包含数千个音乐文件的大型目录.每次扩展符合条件时,它都会将音乐文件添加到observableList <>.在递归方法执行之前,该列表被挂接到另一个线程中的TableView <>,以便用户可以实时查看正在添加到TableView <>的文件.

问题是我对如何在java中管理内存知之甚少,并认为我可能会妨碍垃圾收集.在大约3,000首歌曲之后,递归方法会占用近6 GB的内存,然后开始忽略它应该能够读取的文件.此外,在"完成"逐步通过目录结构之后,ram不会减少,(即,递归方法的堆栈没有被破坏,我认为所引用的所有对象仍然在堆内存中).

它更进一步..我将播放列表导出到XML文件并关闭程序.当我重新启动它时,内存是完全合理的,所以我知道它不是包含文件的大型列表,它必须与递归方法有关.

这是位于音乐处理程序中的recusive方法:

 /**
 * method used to seek all mp3 files in a specified directory and save them
 * to an ObservableArrayList
 * 
 * @param existingSongs
 * @param directory
 * @return
 * @throws FileNotFoundException
 * @throws UnsupportedEncodingException
 */
protected ObservableList<FileBean> digSongs(ObservableList<FileBean> existingSongs,
        File directory) throws FileNotFoundException,
        UnsupportedEncodingException {
    /*
     * Each directory is broken into a list and passed back into the digSongs().
     */
    if (directory.isDirectory() && directory.canRead()) {

        File[] files = directory.listFiles();
        for …
Run Code Online (Sandbox Code Playgroud)

java memory recursion javafx heap-memory

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