我读了关于VSS/RSS/PSS/USS的解释:
这篇文章的目的是提供有助于解释各种工具的内存报告的信息,以便确定Linux进程和系统的真正内存使用情况.
Android有一个名为procrank(/ system/xbin/procrank)的工具,它按从高到低的顺序列出了Linux进程的内存使用情况.每个过程报告的大小是VSS,RSS,PSS和USS.
为了本说明书的简单起见,存储器将以页面而不是字节表示.像我们这样的Linux系统在最低级别管理4096字节页面的内存.
VSS(从ps报告为VSZ)是进程的总可访问地址空间.此大小还包括可能不驻留在RAM中的内存,如已分配但未写入的malloc.VSS几乎没有用于确定进程的实际内存使用情况.
RSS是进程RAM中实际保存的总内存.RSS可能会产生误导,因为它报告了该进程使用的所有共享库的总数,即使共享库仅加载到内存中一次,无论有多少进程使用它.RSS不能准确表示单个进程的内存使用情况.
PSS与RSS的不同之处在于它报告其共享库的比例大小,即如果三个进程都使用具有30个页面的共享库,则该库将仅向为三个进程中的每个进程报告的PSS贡献10个页面.PSS是一个非常有用的数字,因为当系统中所有进程的PSS相加时,这是系统中总内存使用量的良好表示.当进程被终止时,为其PSS贡献的共享库将按比例分配给仍在使用该库的其余进程的PSS总计.这样,PSS可能会产生一些误导,因为当一个进程被终止时,PSS无法准确地表示返回整个系统的内存.
USS是进程的总私有内存,即该进程完全独特的内存.USS是一个非常有用的数字,因为它表示运行特定进程的真正增量成本.当进程被终止时,USS是实际返回给系统的总内存.当最初怀疑某个进程中的内存泄漏时,USS是最好的数字.
对于具有Python可用的系统,还有一个名为smem的漂亮工具,它将报告包括所有这些类别的内存统计信息.
# procrank
procrank
PID Vss Rss Pss Uss cmdline
481 31536K 30936K 14337K 9956K system_server
475 26128K 26128K 10046K 5992K zygote
526 25108K 25108K 9225K 5384K android.process.acore
523 22388K 22388K 7166K 3432K com.android.phone
574 21632K 21632K 6109K 2468K com.android.settings
521 20816K 20816K 6050K 2776K jp.co.omronsoft.openwnn
474 3304K 3304K 1097K 624K /system/bin/mediaserver
37 304K 304K 289K 288K /sbin/adbd
29 720K 720K 261K 212K /system/bin/rild
601 412K 412K 225K 216K procrank
1 …Run Code Online (Sandbox Code Playgroud) 我在绘制时试图旋转纹理.我认为这样做比在paint.net中将图像旋转90度并将它们保存在不同的文件中更有意义.我看了想spritebatch绘图参数的api文档,但我只是不明白.有一堆参数,如srcX,srcY,originX等.另外我想知道如何对纹理区域做同样的事情.下面是api文档页面的链接:http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/graphics/g2d/SpriteBatch.html
谢谢!
我正在为我正在制作的游戏制作地图编辑器.JScrollPane中有一个JPanel,用于显示要编辑的地图.我想要做的是,当用户按住空格键并在JPanel中拖动鼠标时,JScrollPanel将随拖动一起滚动.这是我到目前为止:
panelMapPanel.addMouseMotionListener(new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent e) {
//Gets difference in distance x and y from last time this listener was called
int deltaX = mouseX - e.getX();
int deltaY = mouseY - e.getY();
mouseX = e.getX();
mouseY = e.getY();
if(spacePressed){
//Scroll the scrollpane according to the distance travelled
scrollPane.getVerticalScrollBar().setValue(scrollPane.getVerticalScrollBar().getValue() + deltaY);
scrollPane.getHorizontalScrollBar().setValue(scrollPane.getHorizontalScrollBar().getValue() + deltaX);
}
}
});
Run Code Online (Sandbox Code Playgroud)
目前它的工作原理但滚动并不顺畅.一次移动鼠标很好但是做小拖动会使滚动条变得狂暴.
任何想法如何改善这个?
对于那些喜欢视觉帮助的人,这里是编辑:

加法笔记(编辑):
scrollPane.getViewport().setViewPosition(new Point(scrollPane.getViewport().getViewPosition().x + deltaX, scrollPane.getViewport().getViewPosition().y + deltaY));我已经尝试了大约一个小时来注册我在我正在开发的游戏中为我的一个课程制作的编解码器。该类称为Item. 我尝试了这 3 个地方的代码和建议:
这是我想出的代码:
CodecRegistry defaultCodecRegistry = MongoClient.getDefaultCodecRegistry();
MyCodecProvider myCodecProvider = new MyCodecProvider();
ItemCodec itemCodec = new ItemCodec(defaultCodecRegistry);
CodecRegistry codecRegistry = CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(itemCodec), CodecRegistries.fromProviders(myCodecProvider), defaultCodecRegistry);;
MongoClientOptions options = MongoClientOptions.builder().codecRegistry(codecRegistry).build();
client = new MongoClient("localhost:27017", options);
Run Code Online (Sandbox Code Playgroud)
所以我构建了一个名为的编解码器和编解码器提供程序 MyCodecProvider,所以我做错了什么,这怎么会这么复杂?我错过了什么吗?这似乎比它需要的更复杂。如果您需要更多代码,请询问。谢谢。
编辑:我得到的确切错误是org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class [Lnet.hollowbit.archipeloserver.items.Item;.另外,我正在尝试解析一个 Item 数组,我是否也需要专门为该数组制作编解码器?
周末我为我正在制作的游戏设置了所有网络。我以本教程为基础:GamesFromScratch.com Basic LibGDX Networking。它说它只支持 TCP,但我对此没有意见,因为我可以想出一些办法,而且网上有很多关于如何在没有 UDP 的情况下制作实时游戏的资料。完成后,我在桌面、android 和 HTML5/GWT 上对其进行了测试。桌面和 android 工作,但 GWT 没有。我做了一些研究,发现 Gdx.net 不支持 GWT,这篇文章没有警告我:/基本上现在我正在尝试找到一种适用于所有 libgdx 平台的替代解决方案。
我研究了带有 Socket IO 的 Websockets。以下是我为以下项目找到的 Java 库:Client和Server。服务器库说它与客户端一起运行良好,令人放心。这似乎是一个很好的解决方案,但我有几个问题:
- 客户端库是否适用于所有平台?似乎它可以在 android 和桌面上运行,因为它们不必转换为另一种语言,但是 GWT 和 iOS 呢?而且不仅可以工作,还可以使用服务器库连接到服务器。
- 使用 websockets 时有什么需要注意的吗?
谢谢。
编辑:我做了更多的研究,我找到了Jetty。我环顾四周,它似乎与 GWT 兼容,我只需要知道它是否也与 iOS 兼容。我也可以使用 Jetty 作为我的服务器 api 吗?
我正在使用kryonet从服务器和客户端来回发送对象.只要收到对象,就会运行一个侦听器.它似乎决定对象实例的唯一方法是使用:
if(object instanceof ClientLoginPacket){
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
我想知道什么是instanceof检查以确定对象是否属于特定类型.它检查类是否与所有代码完全相同,是否检查变量和名称?它也检查导入的包吗?你给我的任何信息都可以提供帮助.
我想知道这个的原因是因为我制作数据包的方式,服务器方法中的代码与客户端不同.例如,在我的客户端发送数据包我做:
public void send(){
Client.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud)
在我的服务器上我这样做:
public void send(){
Server.sendPacketTCP(this);
}
Run Code Online (Sandbox Code Playgroud) 我在github上有一个项目,我想从中删除所有与eclipse相关的文件,并允许克隆它的人使用他们想要的任何ide.这是项目:https://github.com/vedi0boy/Archipelo
我要把什么放在我的gitignore?我对整个版本控制管理器的事情仍然很陌生,所以你不必告诉我究竟要放什么,但也许可以解释它是如何工作的,以及要注意什么,以便它仍然可以工作.
顺便说一句,它使用gradle所以我也喜欢它,以便gradle相关文件保持不变,因为克隆人需要它们来构建项目,我打算删除'APIs'文件夹,只使用gradle依赖.