Tag: jvm

对未签名的Java小程序可以做什么的限制?

我正在尝试编译一个完整的列表,列出对未签名的Java小程序的所有限制 (定义为普通Java应用程序可以执行的操作,但未签名的Java小程序不能)。 这是我到目前为止编译的列表: 一个未签名的Java小程序…… 无法访问本地文件系统。 无法访问系统剪贴板。 无法启动打印作业。 无法连接或从任何第三方服务器(applet源自的服务器以外的任何服务器)检索资源。 无法使用多播套接字。 无法创建或注册SocketImplFactory , URLStreamHandlerFactory或ContentHandlerFactory 。 无法侦听传入的套接字连接。 无法收听数据报。 无法访问某些系统属性(java.class.path,java.home,user.dir,user.home,user.name)。 无法创建或注册SecurityManager对象。 无法使用Runtime或System的load()或loadLibrary()方法动态加载本机代码库。 无法通过调用任何Runtime.exec()方法生成新进程。 无法在运行不受信任代码的线程组之外创建或访问线程或线程组。 无法在java.* , sun.*和netscape.*定义类。 无法从sun.*包显式加载类。 无法通过调用System.exit()或Runtime.exit()退出Java运行时。 无法访问系统事件队列。 无法使用java.lang.Classreflection方法获取有关类的非公共成员的信息,除非该类是从与不受信任的代码相同的主机加载的。 无法以任何方式操纵安全身份(java.security)。 无法设置或读取安全属性(java.security)。 无法列出,查找,插入或删除安全提供程序(java.security)。 问题:是否有任何限制缺失? 如果是这样,请清楚说明您认为列表中缺少的限制。

java.net.SocketException:无法识别的Windows套接字错误:0:JVM_Bind(JBOSS)

我在Windows 7上使用JBoss 4.0.5 GA和Java 1.5版(我必须使用旧的Java版本和JBoss,因为我正在使用遗留系统)。 当我启动服务器时,我收到以下错误: java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 我相信这会导致许多其他例外情况: 11:09:26,925 WARN [ServiceController] Problem starting servicejboss.cache:service=TomcatClustering Cache java.lang.NullPointerException at org.jgroups.protocols.FD_SOCK.down(FD_SOCK.java:235) at org.jgroups.stack.Protocol.receiveDownEvent(Protocol.java:467) at org.jgroups.stack.Protocol.passDown(Protocol.java:510) at org.jgroups.protocols.FD.down(FD.java:278) at org.jgroups.stack.Protocol.receiveDownEvent(Protocol.java:467) at org.jgroups.stack.Protocol.passDown(Protocol.java:510) at org.jgroups.stack.Protocol.down(Protocol.java:540) at org.jgroups.stack.Protocol.receiveDownEvent(Protocol.java:467) at org.jgroups.stack.Protocol.passDown(Protocol.java:510) at org.jgroups.protocols.pbcast.NAKACK.down(NAKACK.java:297) at org.jgroups.stack.Protocol.receiveDownEvent(Protocol.java:467) at org.jgroups.stack.Protocol.passDown(Protocol.java:510) at org.jgroups.protocols.UNICAST.down(UNICAST.java:262) at org.jgroups.stack.Protocol.receiveDownEvent(Protocol.java:467) at org.jgroups.stack.Protocol.passDown(Protocol.java:510) at org.jgroups.protocols.pbcast.STABLE.down(STABLE.java:292) at […]

将信号发送到正在运行的JVM

我正在使用自定义信号处理程序来捕获自定义Java守护程序中的TERM,ABRT和INT信号。 我在代码中有这个处理程序,以便我可以向它发送TERM信号并通过kill命令正常关闭程序。 信号处理程序现在正常工作,但是当我编译代码时,我收到以下警告(多次): 警告:sun.misc.SignalHandler是Sun专有API,可能会在将来的版本中删除 使用这些类时: import sun.misc.SignalHandler; import sun.misc.Signal; 有没有更好的方法将信号发送到正在运行的JVM以启动主线程的关闭? 我不希望将我的代码绑定到此API,以便将来可以将其删除。 此代码现在使用1.5.0_22 JVM在Solaris和HPUX上运行。 任何帮助或建议将不胜感激。 我使用IBM的这个文档来开发信号处理程序: http://www.ibm.com/developerworks/java/library/i-signalhandling/

-XX:-PrintGC和XX:-PrintGCDetails标志做什么?

我在这里找到了JVM标志。 是否有更详细的解释他们到底做了什么?

Java物理机怎么样?

Java是移动设备最重要的语言,因为它允许通过在字节代码和机器之间插入JVM的虚拟层来在每台机器上执行相同的二进制/字节代码。 我们可以构建Java物理机器,它将采用字节代码而不是X86 / arm的传统操作码和操作数吗? 所以可以使用Java构建实际操作系统,它比在我们当前的操作系统上安装JVM高效/快速 我的猜测是它会限制安装新版本的JVM,但许多移动设备确实支持有限版本的JVM,这可能不是问题吗? 为什么有人没有尝试将相同的概念实现到硬件?

如何使用Java以编程方式安装所有Java JVM(非默认值)?

有谁知道如何使用Java以编程方式安装所有JVM(而不是默认的JVM)? 例如,用户的计算机上安装了2个JVM: JDK 5 JDK 6 我需要知道所有安装的版本,以便切换它正在使用的版本(默认情况下),然后以编程方式调用javac以使用特定的JDK版本编译一些源代码。 我一直在网上寻找一些信息,我发现: 如何以编程方式获取Java版本(非默认版本)? 我如何以编程方式获取jdk / javac的路径? 但我找不到我想要的东西。

JavaFX在WebView中停止打开URL – 而不是在浏览器中打开

我使用的嵌入式WebView浏览器需要对特定URL进行特殊处理,以在本机默认浏览器而不是WebView中打开它们。 实际的浏览部分工作正常但我需要阻止WebView显示该页面。 我可以想到几种方法,但没有一种方法可行。 这是我的代码: this.wv.getEngine().locationProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { Desktop d = Desktop.getDesktop(); try { URI address = new URI(observable.getValue()); if ((address.getQuery() + “”).indexOf(“_openmodal=true”) > -1) { // wv.getEngine().load(oldValue); // 1 // wv.getEngine().getLoadWorker().cancel(); // 2 // wv.getEngine().executeScript(“history.back()”); // 3 d.browse(address); } } catch (IOException | URISyntaxException e) […]

如何计算Java中的HashMap内存使用情况?

我在接受采访时被要求计算HashMap的内存使用量,以及如果你有200万个项目它会消耗多少估计内存。 例如: Map <String,List> mp=new HashMap <String,List>(); 映射是这样的。 一个键作为字符串,一个字符串数组作为键。 key value —– ————————— abc [‘hello’,’how’] abz [‘hello’,’how’,’are’,’you’] 我如何估计Java中这个HashMap对象的内存使用情况?

Java无法为对象堆错误保留足够的空间

我在32位Windows和4 GB RAM上运行Java7,但是: java -Xmx4G -Xms4G -jar Minecraft.jar java -Xmx3G -Xms3G -jar Minecraft.jar java -Xmx2G -Xms2G -jar Minecraft.jar ……仍然无效。 错误: VM初始化期间发生错误 无法为对象堆保留足够的空间 错误:无法创建Java虚拟机。 错误:发生了致命exception。 程序将会退出。 java -Xmx1G -Xms1G -jar Minecraft.jar正在运行。 为什么?

如何永久增加java堆内存?

我有一个Java堆内存的问题。 我在java中开发了一个客户端服务器应用程序,它作为Windows服务运行,需要超过512MB的内存。 我有2GB的RAM,但是当我运行我的应用程序时它会引发exception 内存不足错误:java堆空间 但我已经在java控制面板中设置了堆大小(最大512MB),我仍然得到相同的错误。 我无法通过命令行设置堆大小,因为我的应用程序作为Windows服务运行,所以如何增加默认堆大小?